层级与属性结合定位

如果被定为的元素,无法通过自身属性来唯一标识自己,此时可以考虑借助上级元素来定位自己。举生活中的例子,一个婴儿刚出生,还没有姓名与身份证号,此时给婴儿进行检查时往往会标注为“某某之女”。因为婴儿的母亲是确定的,找到母亲也就找到了婴儿。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 sleep driver = 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 sleep driver = 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)!

最新文章

  1. Angular Service和Factory应用的区别
  2. Mvc与WebForm优缺点及Mvc的使用
  3. 交叉编译fftw
  4. XML和JSON数据格式对比
  5. php实时输出内容能够
  6. referenceerror wx is not defined 微信JsSdk开发
  7. Tuple元组
  8. Codeforces 4D Mysterious Present
  9. smb相关资料
  10. VB6之多维数组中元素在内存中的排列情况
  11. Android使用百度地图出现闪退及定位时显示蓝屏问题
  12. js实现图片变化
  13. vscode垂直选中列选中
  14. python 接口自动化测试(五)其他-认证&amp;代理&amp;超时配置
  15. [20171113]修改表结构删除列相关问题3.txt
  16. SV processses
  17. 格式化json
  18. Vue&#39;s Demo
  19. 自制session
  20. Linux命令-文件系统常用命令:df,du,fsck,dumpe2fs

热门文章

  1. 关于GWAS的质量控制步骤顺序疑问?不同指导不同文献的建议各不相同。
  2. Weekly Contest 137
  3. 2-7 Java基础数据类型之字符型
  4. js去重的两种方法
  5. 【JDK8】Java8 Stream流API常用操作
  6. Python中Scapy网络嗅探模块的使用
  7. Win64 驱动内核编程-23.Ring0 InLineHook 和UnHook
  8. pr恢复工作区
  9. Mac终端使用tree命令查看目录结构
  10. Sublime 快捷生成HTML 插件安装