⼋⼤元素定位
⼀、⼋种基本元素定位⽅法
1.通过id定位:find_element_by_id()
2.通过name定位:find_element_by_name()
3.通过class定位:find_element_by_class_name()
4.通过tag定位:find_element_by_tag_name()
5.通过link定位:find_element_by_link_text()----精准匹配
6.通过partial_link定位:find_element_by_partial_link_text()-----模糊匹配
7.通过xpath定位:find_element_by_xpath()
8.通过css定位:find_element_by_css_selector()
其中每⼀种定位⽅法⼜有两种⽅式,⽐如通过id来定位:
xpath语法 python
find_element_by_id()
find_elements_by_id()
这两者的区别在于,不加s返回的是第⼀个匹配到的元素,加上s返回所有匹配到的元素
⼆、XPATH定位
在ui⾃动化中⽐较灵活⼜常⽤的是xpath定位,以下是⼏种xpath定位的语法格式
在说xpath定位之前,格式要先弄清楚
绝对定位:/开头,严格按照元素的树级路径(只能是爸爸的⼉⼦)
相对定位://开头,相对路径(爸爸的所有后代)
xpath定位语法格式:
单个属性://标签名[@属性名称=值]
多个属性://标签名[@属性名称=值 and/or @属性名称=值]
包含://标签名[contains(@属性名称,“值")],例://a[contains(@href,"abc")]
⽂本://标签名[text()=⽂本],例://a[text()='作业']
包含和⽂本同⽤://a[contains(text(),'作业')]
针对xpath的⼏种语法格式定位分别进⾏举例说明:
(1)、单个属性
例如在⽹址栏位输⼊www.baidu,去定位百度输⼊框这个元素,⽤⿏标点击上去发现该元素有class、id、name属性,⾮常之丰富,那我们就可以根据其中的任何⼀个进⾏定位
//*[@id='kw']
//*[@name='wd']
//*[@class='s_ipt']
(2)、多个属性
例如定位百度这张图⽚所在元素,它也存在很多个不同的属性,只通过⼀个属性⽆法定位的时候,我们可以根据多个属性进⾏组合定位
(3)、包含
当元素的某个属性的值很长,或者不好记的时候,我们可以使⽤包含,例如定位“百度⼀下”这个按钮的元素,value值包含百度⼀词即可定位到唯⼀⼀个
(4)、⽂本
//span[text()='换⼀换']
(5)、包含和⽂本同⽤
//span[contains(text(),'换⼀换')]
三、XPATH轴定位
轴运算
ancestor:祖先节点,包括⽗
parent:⽗节点
preceding:当前元素节点标签之前的所有节点(html页⾯先后顺序)
preceding-sibling:当前元素节点标签之前的所有兄弟节点
following:当前元素节点标签之后的所有节点(html页⾯先后顺序)
following-sibling:当前元素节点标签之后的所有兄弟节点
轴定位语法:
已知的元素/轴名称::标签名称[@属性=值]
举例:
以百度⾸页为例,定位“百度⼀下”按钮的元素,⽤⿏标定位到该按钮后,发现该元素的⽗标签是<span>,span的⽗标签是<form>,我们可以通过form标签来⼀步步到“百度⼀下”的标签
以下提供两种xpath路径:
/
/form[@id='form']//following-sibling::span[@class='bg s_btn_wr']/input----------先通过idform标签,再通过class其兄弟节点,再下⾯的input标签
//form[@id='form']//following::input[@id='su']---------------------先通过idform标签,再该节点后的所有节点中出id为su的input标签
所以元素定位是⾮常灵活的,可以有多种⽅式,平时⼀般较难定位的才会⽤到轴定位,实际上改元素通过id就能唯⼀定位了
四、CSS定位语法
driver.find_element_by_css_selector("#kw").send_keys("python")------id属性
driver.find_element_by_css_selector(".s_ipt").send_keys("python")------class属性
driver.find_element_by_css_selector("[name='wd']").send_keys("python")-----name属性
driver.find_element_by_css_selector("input#kw").send_keys("python")----标签与id属性的组合
driver.find_element_by_css_selector("input.s_ipt").send_keys("python")------标签与class属性的组合
driver.find_element_by_css_selector("form#form>span>input").send_keys("python")-----通过层级关系定位

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。