Selenium介绍
Selenium是一个用于Web应用程序自动化测试工具,背后有google 维护源代码,支持全部主流浏览器,支持主流的编程语言,包括:java,Python,C#,PHP,Ruby等
特点
- 开源、免费
- 多浏览器支持:FireFox、Chrome、IE、Opera、Edge;
- 多平台支持:Linux、Windows、MAC;
- 多语言支持:Java、Python、Ruby、C#、JavaScript、C++;
- 对Web页面有良好的支持;
- 简单(API 简单)、灵活(用开发语言驱动);
- 支持分布式测试用例执行。
chromeDriver驱动下载:http://chromedriver.storage.googleapis.com/index.html
下载的驱动要和自己安装的谷歌浏览器版本相互匹配
项目依赖包
最新版可以在mvnrepository查找,链接如下
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>${selenium.version
}</version>
</dependency>
使用手册
1 导航
1.1 打开网页
driver.get("https://www.baidu.com")
driver.navigate.to("https://www.baidu.com")
// 区别:get是有逻辑的跳转,而navigate.to是直接跳转到该页面,没有任何逻辑
// 参考:https://blog.csdn.net/gaokao2011/article/details/17169969
1.2 获取当前页面url
//返回的是字符串
String url = driver.getCurrentUrl();
//https://www.baidu.com
System.out.println(url);
1.3 返回上一页
driver.navigate.back();
1.4 前进下一页面
driver.navigate.forward();
1.5 刷新当前页面
driver.navigate.refresh();
1.6 获取当前页面的title
String title = driver.getTitle(); //返回字符串
System.out.println(title); //百度一下,你就知道
2 窗口、Tabs
当driver打开一个新窗口时,若想操作新窗口上的元素,则需要将driver切换到新窗口
2.1 获取当前窗口句柄
//返回字符串
String currentWindowHandle = driver.getWindowHandle();
2.2 获取所有窗口句柄
//返回字符串集合
Set<String> allWindowHandles = driver.getWindowHandles();
2.3 切换到新窗口
//newHandle为要切换的新窗口的句柄
driver.switchTo().window(newHandle);
2.4 关闭窗口或tabs
driver.close();
2.5 会话结束时退出浏览器
driver.quit();
3 Frames and IFrames
当页面上有iframe和frame元素时,若想操作iframe和frame下的html元素,则需要切换driver
3.1 切换到指定iframe或frame
WebElement element_iframe = driver.findElement(By.id("iframe1"));
driver.switchTo().frame(element_iframe);
3.2 切换回父页面
driver.switchTo().defaultContent();
4 window管理
4.1 获取窗口大小
int width = driver.manage().window().getSize().getWidth();
int height = driver.manage().window().getSize().getHeight();
Dimension size = driver.manage().window().getSize();
int width = size.getWidth();
int height = size.getHeight();
4.2 设置窗口大小
driver.manage().window().setSize(new Dimension(1024,768));
4.3 获取窗口位置
int x = driver.manage().window().getPosition().getX();
int y = driver.manage().window().getPosition().getY();
Point position = driver.manage().window().getPosition();
int x = position.getX();
int y = position.getY();
5 设置窗口
5.1 设置窗口位置
driver.manage().window().setPositon(new Point(0,0));
5.2 最大化窗口
driver.manage().window().maximize();
5.3 全屏窗口
driver.manage().window().fullscreen();
6 定位
driver.find 或 element.find
findElement(By.id("XXX"))
findElement(By.name("XXX"))
findElement(By.className("XXX"))
findElement(By.cssSelector("XXX"))
findElement(By.linkText("XXX"))
findElement(By.partialLinkText("XXX"))
findElement(By.tagName("XXX"))
findElement(By.xpath("XXX"))
findElements(By.id("XXX"))
findElements(By.name("XXX"))
findElements(By.className("XXX"))
findElements(By.cssSelector("XXX"))
findElements(By.linkText("XXX"))
findElements(By.partialLinkText("XXX"))
findElements(By.tagName("XXX"))
findElements(By.xpath("XXX"))
7 执行js脚本
//声明一个js执行器
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("alert(123)");
评论 (0)