重点:基于 Java 语言的 Selenium 基础-尚学堂

第六章 基于 Java 语言的 Selenium 基础

一、 基于 Java 语言的 Selenium 环境搭建
安装 jre+eclipse ,创建 Java 项目
安装 selenium :在 eclipse 中导入如下包
selenium-java-3.9.1.zip
selenium-server-standalone-3.9.1.jar
准备浏览器驱动器
无需安装,复制到某个位置(此位置需要写到代码中)
IEDriverServer chromedriver(google) geckodriver(Firefox)
webdriver.Ie() .Chrome() .Firefox()
使用 Selenium IDE
断网安装 Firefox57
选择自定义安装(不要选择默认安装),取消勾选 " 安装维护服务 "
安装完成后,工具—选项—常规— firefox 更新:勾选“不检查更新”即可,
去掉勾选“自动更新搜索引擎”
联网安装 SeleniumIDE
设置—附加组件—扩展—搜索 SeleniumIDE ,然后安装
二、 编写测试脚本
1 指定浏览器驱动,打开浏览器
1.1 IE
System.setProperty("webdriver.ie.driver", "C:\\...\\IEDriverServer.exe");
WebDriver driver = new InternetExplorerDriver();
1.2 Firefox
需事先安装对应驱动版本的浏览器
System.setProperty("webdriver.gecko.driver", "C:/…/geckodriver.exe");
System.setProperty("webdriver.firefox.bin","E:/Mozilla Firefox/firefox.exe");
WebDriver driver = new FirefoxDriver();
1.3 Google
System.setProperty("webdriver.chrome.driver", "C:\\...\\chromedriver.exe");
WebDriver driver = new ChromeDriver(); 2 关闭浏览器窗口
driver.close();
关闭页面
driver.quit();
关闭页面
关闭相关进程
3 设置等待时间
操作太快容易导致对象控件不出现,从而失败。
隐式等待
driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
隐式等待采用全部设置,所有的 findElement 方法都会隐式等待 1s
上述方法针对执行脚本的所有对象,等待 3 秒。
Thread.sleep(3000);
//ms
只需放在需要等待的位置。
4 打开网址
driver.get("http://localhost:1080/webtours");
driver.getTitle()
获得浏览器网页标题(字符串)
5 识别页面元素
5.1 driver.findElement(By. 属性 )
查询符合属性要求的第一个对象。
适用于文本框、密码框、命令按钮、单选按钮。
属性
name(" ")
tagName " 标签名 "
标签即 <> 内的关键字。
xpath("// 标记名 [@ 属性名 =' 属性值 ']")
id
className
CSS class 属性的值
linkText
<a href> </a> 之间的内容
partialLinkText
<a href> </a> 之间的部分文本值 5.2 driver.findElements(By. 属性 ).get( 下标 )
查询符合属性要求的所有对象;
适用于单选按钮、复选框、链接等。
使用 get( 下标 ) 可以选择某个,从 0 开始。
6 操作页面元素的方法
6.1 文本框 + 密码框 + 多行文本框
sendKeys(" 数据 ")
clear()
清空
getAttribute(" 属性名 ")
获取对应属性的属性值,如 value
getText()
获取文本值
可能获得不到数据
6.2 单选按钮 + 复选框
click()
单击 / 选中
isSelected()
是否选中
6.3 下拉列表
new Select(driver.findElement(By.name("select 控件名 "))).
selectByIndex( 下标 )
根据下标选择某项,从 0 开始
selectByVisibleText(" 数据 ")
根据列表框中显示的文本选择某项
selectByValue(" ")
根据值选择某项
6.4 链接 + 命令按钮
click()
单击
7 切换 frame 框架
driver.switchTo().defaultContent();
切回主文档
每次打开一个新网页时,应使用此句
driver.switchTo().frame(1 "body");
表示进入第 2 frame 或名为 body frame
如果 frame 中有 frameset ,则需要层层切换
三、 增强测试脚本
1 添加检查点
Boolean res=driver.findElement(By.tagName("body")).getText().contains("Welcome")
返回 true false
检查时判断的是前台文本。
2 参数化
2.1 Java 读文件
File file=new File("C:/.../flights.txt");
FileReader reader=new FileReader(file);
BufferedReader buffer=new BufferedReader(reader);
String row=null;
while((row=buffer.readLine())!=null){
String columns[]=row.split("\t");
for(String x:columns)
System.out.println(x);
}
reader.close();
2.2 输入数据参数化
while((row=chars.readLine())!=null){
String cols[]=row.split("\t");
new Select(driver.findElement(By.name("depart"))).selectByVisibleText(cols[0]);
new Select(driver.findElement(By.name("arrive"))).selectByVisibleText(cols[1]);
}
使用循环直接实现局部迭代。
2.3 检查点参数化
Boolean bookResult=driver.findElement(By.tagName("body")).getText().
contains("Flight 241 leaves "+cols[0]+" for "+cols[1]); 3 使用输出值
3.1 输出实际结果
String flightNum=driver.findElements(By.name("outboundFlight")).get(1).
getAttribute("value").substring(0, 3);
System.out.println(flightNum);
3.2 使用输出值参数化
Boolean bookResult=driver.findElement(By.tagName(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值