阅读 127

Selenium3自动化测试【18】XPath定位元素(2)

Selenium3自动化测试【18】XPath定位元素(2)

层级与属性结合定位

如果被定为的元素,无法通过自身属性来唯一标识自己,此时可以考虑借助上级元素来定位自己。举生活中的例子,一个婴儿刚出生,还没有姓名与身份证号,此时给婴儿进行检查时往往会标注为“某某之女”。因为婴儿的母亲是确定的,找到母亲也就找到了婴儿。XPath的层级与属性结合定位就是如此。
假设bing页面的搜索框与搜索按钮元素,无法通过自身属性来定位。则可以借助其上一级(父对象)元素来定位,前端代码如图所示。

搜索框元素的上一级是1个div标签,该div标签的clalss属性等于b_searchboxForm,html代码如下:

<div class="b_searchboxForm" role="search" data-bm="15">
……
……
</div>

层级与属性结合find_element_by_xpath("//div[@class='b_searchboxForm']/input")
搜索按钮元素的上一级也是1个div标签,该div标签的id属性等于sb_go_par,该div的html代码如下:

<div id="sb_go_par" data-sbtip="搜索网页">
<input type="submit" class="b_searchboxSubmit" id="sb_form_go" tabindex="0" name="go">
</div>

层级与属性结合find_element_by_xpath("//div[@id='sb_go_par']/input")
XPath通过层级与属性结合定位元素的完整代码如下:

from selenium import webdriver
from time import sleepdriver = webdriver.Firefox()
driver.get("http://cn.bing.com/")# 通过层级与属性的结合,定位元素# 适用与某个元素其本身无法标识自己,需要通过其上一级来表示driver.find_element_by_xpath("//div[@class='b_searchboxForm']/input").send_keys("bella")
driver.find_element_by_xpath("//div[@id='sb_go_par']/input").click()sleep(1)
driver.quit()

多属性结合定位

假设某元素无法通过单一属性定位,如果该元素还有其他属性,考虑多个属性的组合来定位该元素。类似生活中的案例,假如你所在的项目小组中有两个同事都叫王强,而他们的工号则不同,姓名+工号就能够唯一的标记具体是那个同事。
假设bing页面的搜索框与搜索按钮元素,无法通过单个属性来定位,则可以多个属性结合来实现定位。
搜素框元素的html代码。

<input class="b_searchbox" id="sb_form_q" name="q" title="输入搜索词" type="search" value="" maxlength="100" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" aria-controls="sw_as" aria-autocomplete="both" aria-owns="sw_as">

搜索按钮元素的html代码

<input type="submit" class="b_searchboxSubmit" id="sb_form_go" tabindex="0" name="go">

通过多属性结合定位元素,需要通过“and”连接多个属性。

find_element_by_xpath("//input[@id='sb_form_q' and @class='b_searchbox'] ")
find_element_by_xpath("//input[@id='sb_form_go' and @class='b_searchboxSubmit']")

XPath通过多属性结合定位元素的完整代码如下:

from selenium import webdriver
from time import sleepdriver = webdriver.Firefox()
driver.get("http://cn.bing.com/")#如果一个属性不能唯一标识某个元素,考虑多个属性组合+使用逻辑运算符driver.find_element_by_xpath("//input[@id='sb_form_q' and @class='b_searchbox'] ").send_keys("bella")
driver.find_element_by_xpath("//input[@id='sb_form_go' and @class='b_searchboxSubmit']").click()sleep(3)
driver.quit()


如果你觉的文章读的不过瘾,可以查看详细的视频教程。
【2021】UI自动化测试:Selenium3自动化测试
https://ke.qq.com/course/3172187?tuin=9c43f38e

【测试全系列视频课程】请点击我哦.....

《全栈测试系列视频》课程

地址:https://ke.qq.com/course/2525707?tuin=9c43f38e

图书京东、当当有售

京东:https://item.jd.com/12784287.html
当当:http://product.dangdang.com/29177828.html)!

分类: 2021版Selenium3

标签: 自动化测试框架, selenium3, python3+selenium3

来源https://www.cnblogs.com/starpoint/p/14844459.html

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐