博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
selenium-元素定位
阅读量:4684 次
发布时间:2019-06-09

本文共 2377 字,大约阅读时间需要 7 分钟。

selenium元素的定位方式主要有八种:

要保证用此定位方法定位到的元素是唯一的。

1、By_id

2、By_name

3、By_className(元素的css样式)

4、By_tagName(元素的标签名称)

5、By_linkText  (超文本链接上的文字信息)

6、By_particalLinkText  (超文本链接上的部分文字信息)

 

7、By_xpath (XPath是XML Path的简称,由于HTML文档本身就是一个标准的XML页面,所以我们可以使用XPath的语法来定位页面元素。绝对路径/相对路径)

通过XPath定位的元素容易受html调整的影响,可以先通过id或name属性找到就近的元素,如父元素,用以加强测试脚本的稳定性。(ChroPath插件)

 
例如,源文件如下:
   

 

form元素可以这样定位:

1.绝对定位(最容易受HTML语句改变的影响)

2.HTML中第一个form元素

3.包含属性为id,值为“loginForm"的form元素  

1
2
3
login_form 
= 
driver.find_element_by_xpath(
"/html/body/form[1]"
)
login_form 
= 
driver.find_element_by_xpath(
"//form[1]"
)
login_form 
= 
driver.find_element_by_xpath(
"//form[@id='loginForm']"
)

 

username元素可以这样定位:

1.form元素的input子元素中包含属性为name,值为”username“的元素

2.包含属性为id,值为“loginForm"的form元素的第一个input子元素

3.包含属性为name,值为”username“的第一个input元素

1
2
3
username 
= 
driver.find_element_by_xpath(
"//form[input/@name='username']"
)
username 
= 
driver.find_element_by_xpath(
"//form[@id='loginForm']/input[1]"
)
username 
= 
driver.find_element_by_xpath(
"//input[@name='username']"
)

 

Clear按钮可以这样定位:

1.同时包含属性为name,值为”continue“和属性为type,值为”button“的input元素

2.包含属性为id,值为“loginForm"的form元素的第4个input子元素

1
2
clear_button 
= 
driver.find_element_by_xpath(
"//input[@name='continue'][@type='button']"
)
clear_button 
= 
driver.find_element_by_xpath(
"//form[@id='loginForm']/input[4]"
)

 

8、By_cssSelector 

cssSelector这种元素定位方式跟xpath比较类似,但执行速度较快,而且各种浏览器对它的支持都相当到位,所以功能也是蛮强大的。

下面是一些常见的cssSelector的定位方式:

定位id为flrs的div元素,可以写成:#flrs     注:相当于xpath语法的//div[@id=’flrs’]

定位id为flrs下的a元素,可以写成 #flrs > a  注:相当于xpath语法的//div[@id=’flrs’]/a

定位id为flrs下的href属性值为/forexample/about.html的元素,可以写成: #flrs > a[href=”/forexample/about.html”]

eg:driver.findElement(By.cssSelector("button.btn.btn_big.btn_submit"))

如果需要指定多个属性值时,可以逐一加在后面,如#flrs > input[name=”username”][type=”text”]。

此外,cssSelector还有一些高级用法,如果熟练后可以更加方便地帮助我们定位元素,如我们可以利用^用于匹配一个前缀,$用于匹配一个后缀,*用于匹配任意字符。例如:

匹配一个有id属性,并且id属性是以”id_prefix_”开头的超链接元素:a[id^='id_prefix_']

匹配一个有id属性,并且id属性是以”_id_sufix”结尾的超链接元素:a[id$='_id_sufix']

匹配一个有id属性,并且id属性中包含”id_pattern”字符的超链接元素:a[id*='id_pattern']

 

 

最后再总结一下,各种方式在选择的时候应该怎么选择:

1. 当页面元素有id属性时,最好尽量用id来定位。但由于现实项目中很多程序员其实写的代码并不规范,会缺少很多标准属性,这时就只有选择其他定位方法。

2. xpath很强悍,但定位性能不是很好,所以还是尽量少用。如果确实少数元素不好定位,可以选择xpath或cssSelector。

3. 当要定位一组元素相同元素时,可以考虑用tagName或name。

4. 当有链接需要定位时,可以考虑linkText或partialLinkText方式。

 

转载于:https://www.cnblogs.com/NewMe/p/9235882.html

你可能感兴趣的文章
Open vSwitch安装
查看>>
HashMap、HashTable、LinkedHashMap和TreeMap用法和区别
查看>>
document.domain 跨域问题[转]
查看>>
【Android】 No Activity found to handle Intent.
查看>>
Mysql 模糊匹配(字符串str中是否包含子字符串substr)
查看>>
Struts2 Action名称的搜索顺序
查看>>
C++ sort简单用法
查看>>
Oracle分区索引
查看>>
4.17上午
查看>>
IIS的ISAPI接口简介
查看>>
python:open/文件操作
查看>>
16 乘法口诀输出
查看>>
mac 常用地址
查看>>
鼠标经过切换图片
查看>>
流程控制 Day06
查看>>
Linux下安装Tomcat
查看>>
windows live writer 2012 0x80070643
查看>>
C程序的启动和终止
查看>>
asp.net web 定时执行任务
查看>>
tomcat 和MySQL的安装
查看>>