八大元素定位

1、八种基本元素定位方法css

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()html

其中每一种定位方法又有两种方式,好比经过id来定位:python

find_element_by_id()ui

find_elements_by_id()spa

这二者的区别在于,不加s返回的是第一个匹配到的元素,加上s返回全部匹配到的元素orm

2、XPATH定位htm

在ui自动化中比较灵活又经常使用的是xpath定位,如下是几种xpath定位的语法格式blog

在说xpath定位以前,格式要先弄清楚图片

绝对定位:/开头,严格按照元素的树级路径(只能是爸爸的儿子)
相对定位://开头,相对路径(爸爸的全部后代)ip

xpath定位语法格式:

 

单个属性://标签名[@属性名称=值]
多个属性://标签名[@属性名称=值 and/or @属性名称=值]
包       含://标签名[contains(@属性名称,“值")],例://a[contains(@href,"abc")]
文       本://标签名[text()=文本],例://a[text()='做业']
包含和文本同用://a[contains(text(),'做业')]

 

针对xpath的几种语法格式定位分别进行举例说明:

(1)、单个属性

例如在网址栏位输入www.baidu.com,去定位百度输入框这个元素,用鼠标 点击上去发现该元素有class、id、name属性,很是之丰富,那咱们就能够根据其中的任何一个进行定位

//*[@id='kw']

//*[@name='wd']

//*[@class='s_ipt']

 

(2)、多个属性

例如定位百度这张图片所在元素,它也存在不少个不一样的属性,只经过一个属性没法定位的时候,咱们能够根据多个属性进行组合定位

 

 

(3)、包含

当元素的某个属性的值很长,或者很差记的时候,咱们可使用包含,例如定位“百度一下”这个按钮的元素,value值包含百度一词便可定位到惟一一个

 

 

(4)、文本

//span[text()='换一换']

 

 (5)、包含和文本同用

//span[contains(text(),'换一换')]

 

 

3、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----------先经过id找form标签,再经过class找其兄弟节点,再找下面的input标签

//form[@id='form']//following::input[@id='su']---------------------先经过id找form标签,再找该节点后的全部节点中找出id为su的input标签

因此元素定位是很是灵活的,能够有多种方式,平时通常较难定位的才会用到轴定位,实际上改元素经过id就能惟必定位了

 

 4、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")-----经过层级关系定位

相关文章
相关标签/搜索