元素定位

1、id:find_element_by_id()  

当id属性 是唯一的不变的时候,可使用这个定位元素。

如:<input id="username" class="ant-input ant-input-lg" value="" data-__meta="[object Object]" autocomplete="off" type="text"/>

 find_element_by_id("username")

 

2、name:find_element_by_name()

当name属性 是唯一的不变的时候,可使用这个定位元素。

如:<input id="username" name="kw" class="ant-input ant-input-lg" value="" data-__meta="[object Object]" autocomplete="off" type="text"/>

find_element_by_name("kw")

 

3、class:find_element_by_class_name()  

当class 属性 是唯一的不变的时候,可使用这个定位元素。

如:<input id="username" name="kw" class="ant-input ant-input-lg" value="" data-__meta="[object Object]" autocomplete="off" type="text"/>

find_element_by_class_name("ant-input ant-input-lg")

 

4、tag(标签名):find_element_by_tag_name()  

很少用这个定位,一般标签名都会有多个。

如:<input id="username" name="kw" class="ant-input ant-input-lg" value="" data-__meta="[object Object]" autocomplete="off" type="text"/>

find_element_by_tag_name("input")

 

 5、link(链接):find_element_by_link()/find_element_by_partial_link()

对于一个元素属性有:href=’',表示他是一个超链接,就可以通过这个区定位

如: <a href="#/data/query/allitem">

find_element_by_link("#/data/query/allitem")  ---精确匹配

find_element_by_partial_link("#/data/query")  ---模糊匹配

 

6、css定位:find_element_by_css_selector()

比较灵活可以随便选择属性定位。

如:<input id="username" name="kw" class="ant-input ant-input-lg" value="" data-__meta="[object Object]" autocomplete="off" type="text"/>

通过id:find_element_by_css_selector("input[id=\"username\"]")

通过name:find_element_by_css_selector("input[name=\"kw\"]")

............

其他属性大致一样

 

7、xpath定位:find_element_by_xpath()

通过元素的路径来查找这个元素。

① 属性和标签

如:<input id="username" name="kw" class="ant-input ant-input-lg" value="" data-__meta="[object Object]" autocomplete="off" type="text"/>

通过id:find_element_by_xpath("//*[@id='username']")    ----  *  表示查询所有标签中id为username的元素

通过name:find_element_by_css_selector("//input[@name=‘kw’]")   ----  input 表示指定查找input标签中name为kw的元素

.......

通过其他属性查询大致一样。

 

②层级

若一个元素的属性不是很明显,无法直接定位到,这是可以先找到他的父节点,然后再找下个层级就可以定位到了。若父节点还是不明显,就再往上一层级找........

如:

通过节点查找:find_element_by_xpth("//span[@class='ant-input-wrapper']/input)

通过再上一层级查找:find_element_by_xpth("//div[@class='ant-form-item-control']/span/input")

 

③索引

一个元素他的兄弟元素跟他的标签一样,这时无法通过层级查找到,这时就可以通过索引的方式(因为有先后差别),索引是从1开始的

 

通过索引查找:find_element_by_xpth("//u1[@role='menu']/li[1]")

 

④逻辑运算

支持多个属性逻辑运算的,与(and)、或(or)、非(not)

如:<input id="username" name="kw" class="ant-input ant-input-lg" value="" data-__meta="[object Object]" autocomplete="off" type="text"/>

find_element_by_xpath("//*[@id='username' and name=‘kw’]")    ----  and运算

 

⑤模糊匹配

find_element_by_xpath("*[contains(text(),'hao123')]")    -----模糊匹配功能

find_element_by_xpath("*[contains(@id,'username')]")  -----模糊匹配某个属性

find_element_by_xpath("*[start-with(@id,'username')]")  ------模糊匹配已什么开头

.........

 

 

⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳

posted @ 2017-06-23 16:47  溪棱  阅读(500)  评论(0编辑  收藏  举报