Selenium之页面元素定位方法
页面元素的定位方法
Webdriver提供了findElement和findElements函数进行单个元素和一组元素的定位
定位方法 | 定位方法的Java语言实现实例 |
---|---|
id定位 | Driver.findElement(By.id(“属性id的值”)); |
name定位 | Driver.findElement(By.name(“属性name的值”)); |
link的全文字定位 | Driver.findElement(By.linkText(“链接的全部文字内容”)); |
link部分文字定位 | Driver.findElement(By.partialLinkText(“链接的部分文字内容”)); |
标签名定位 | Driver.findElement(By.tagName(“页面中的HTML标签名称”)); |
class名称定位 | Driver.findElement(By.className(“页面中的Class标签名称”)); |
xpath方式定位 | Driver.findElement(By.xpath(“Xpath定位表达式”)); |
css方式定位 | Driver.findElement(By.cssSelector(“Css定位表达式”)); |
jQuery定位 | js.executeScript(“return jQurey.find(‘jQurey定位表达式’)”); |
使用ID定位
HTML的id属性是挡墙网页中的唯一,使用ID值定位可以保证定位的唯一性。
被测试网页HTML代码:
1 | <html> |
定位语句代码:
1 | WebElement username = driver.findElement(By.id("username")); |
使用name定位
HTML的name属性在档期啊网页中可以不是唯一的,使用name定位可能会同时定位到多个元素。
被测试网页HTML代码:
1 | <html> |
定位语句代码:
1 | WebElement username = driver.findElement(By.name("username")); |
使用链接的全部文字定位
使用此方式定位链接需要完全匹配链接显示文件,常用于页面中多个链接文字高度相似的情况,且无法使用部分链接文字进行定位。
被测试网页HTML代码:
1 | <html> |
定位语句代码:
1 | WebElement link = driver.findElement(By.linkText("百度搜索")); |
使用部分链接的文字定位
执行js脚本
- Selenium能够执行js,这使得Selenium拥有更为强大的能力。既然能执行js,那么js做的事,Selenium应该大部分也能做
- 直接使用js操作页面,能解决很多click()不生效的问题
- 页面滚动到底部/顶部
- 处理富文本框,时间控件的输入
Selenium如何调用js
selenium提供了js的一个api
1 | JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver; |
- executeScript:执行js
js处理案件–时间控件
- 大部分时间控件都是readonly属性,需要手动去选择对应的时间,手工测试中很容易做到,自动化中对控件的操作可以使用js来操作。
- 处理时间控件思路:
- 要取消日期的readonly属性
- value赋值
- webdriver对js进行处理
元素定位小工具
ChroPath
Chrome浏览器的插件,需要翻墙安装
Xpath Helper
Chrome浏览器的插件,需要翻墙安装s
xPath Finder
xPath Finder是Firefox火狐浏览器的插件
点击”附加组件“ ,或浏览器请求地址:about:addons
查找组件
安装组件
使用
TryXpath
TryXpath是Firefox火狐浏览器的插件
安装组件
使用
确定元素的唯一性
可以使用Chrome浏览器控制台的进行元素唯一的确认
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Jing's Blog!