前言

在一般情况下,我们通过简单的xpath即可定位到目标元素,但对于一些既没id又没name,而且其他属性都是动态的情况就很难通过简单的方式进行定位了。

在这种情况下,我们需要使用xpath1.0内置的函数来进行定位,下面我们重点讨论一下3个函数:

  • Contains
  • Sibling

Contains函数

通过contains函数,我们可以提取匹配特定文本的所有元素。

例如在百度首页,我们使用contains定位包含“新闻”文本的元素。

baidu_news.png

"//div/a[contains(text(), 新闻)]"

在python selenium中使用xpath contains定位,代码片段如下:

driver.find_element_by_xpath("//div/a[contains(text(), 新闻)]")

sibling函数

通过sibling函数我们可以提取指定元素的所有同级元素,即获取目标元素的所有兄弟节点。

例如通过刚才“新闻”节点来定位“hao123”节点。

"//div/following-sibling::a[contains(text(), 新闻)]"

python selenium代码片段为如下

driver.find_element_by_xpath(
u"//div/a[contains(text(), '%s')]/following-sibling::*" % u"新闻")

通过刚才“新闻”节点来定位其所有的兄弟节点。

python selenium代码片段如下(注意这里用的是find_==elements==_by_xpath):

driver.find_elements_by_xpath(
u"//div/a[contains(text(), '%s')]/following-sibling::*" % u"新闻")

下面我们看一个完整的代码示例:

#_*_ coding:utf-8 _*___author__ = '苦叶子'from selenium import webdriverimport sys
reload(sys)
sys.setdefaultencoding("utf-8")if __name__ == '__main__':driver = webdriver.Ie()driver.get(u"http://www.baidu.com")# 定位 通过contains 定位包含“新闻”的元素new_node = driver.find_element_by_xpath(u"//div/a[contains(text(), '%s')]" % u"新闻")print new_node.text# 定位 “新闻”元素的兄弟节点“hao123”hao123_node = driver.find_element_by_xpath(u"//div/a[contains(text(), '%s')]/following-sibling::*" % u"新闻")print hao123_node.text# 定位 “新闻”元素的所有兄弟节点all_node = driver.find_elements_by_xpath(u"//div/a[contains(text(), '%s')]/following-sibling::*" % u"新闻")for ee in all_node:print ee.textdriver.quit()

xpath常用函数

  1. child 选取当前节点的所有子节点
  2. parent 选取当前节点的父节点
  3. descendant 选取当前节点的所有后代节点
  4. ancestor 选取当前节点的所有先辈节点
  5. descendant-or-self 选取当前节点的所有后代节点及当前节点本身
  6. ancestor-or-self 选取当前节点所有先辈节点及当前节点本身
  7. preceding-sibling 选取当前节点之前的所有同级节点
  8. following-sibling 选取当前节点之后的所有同级节点
  9. preceding 选取当前节点的开始标签之前的所有节点
  10. following 选去当前节点的开始标签之后的所有节点
  11. self 选取当前节点
  12. attribute 选取当前节点的所有属性
  13. namespace 选取当前节点的所有命名空间节点

在Selenium Webdriver中使用XPath Contains、Sibling函数定位相关推荐

  1. Selenium webdriver中的xpath定位

    使用selenium进行自动化测试,其实很多时候就是模拟用户的操作,在前端页面对元素进行操作,因此元素的定位在自动化测试中是至关重要的.关于如何 使用id,className,name,linkTex ...

  2. Selenium WebDriver中的TestNG侦听器及示例

    Java提供了不同的接口,使您可以修改TestNG行为. 这些接口在Selenium WebDriver中进一步称为TestNG侦听器. TestNG Listeners还允许您根据项目要求自定义测试 ...

  3. 总结Selenium WebDriver中一些鼠标和键盘事件的使用

    在使用 Selenium WebDriver 做自动化测试的时候,会经常模拟鼠标和键盘的一些行为.比如使用鼠标单击.双击.右击.拖拽等动作:或者键盘输入.快捷键使用.组合键使用等模拟键盘的操作.在 W ...

  4. 使用Python在Selenium WebDriver中获取WebElement的HTML源代码

    我正在使用Python绑定来运行Selenium WebDriver. from selenium import webdriver wd = webdriver.Firefox() 我知道我可以抓住 ...

  5. selenium webdriver中执行js(java)

    在代码中import org.openqa.selenium.JavascriptExecutor;就可以使用executeScript.executeAsyncScript这两个方法了 execut ...

  6. java selenium iframe_如何使用java在Selenium WebDriver中处理iframe

    4t43t4 在这种情况下,iframe下有一个iframe.我必须选择外部iframe去内部iframe并写入内部iframe中的主体. 接下来,我必须从内部iframe到外部iframe,然后单击 ...

  7. selenium拖动元素java_使用Java在Selenium WebDriver中聚焦元素的正确方法

    下面的代码 – element.sendKeys(""); 尝试找到一个输入标签框来输入一些信息,而 新操作(驱动程序).moveToElement(元素).perform(); ...

  8. python selenium语法_selenium之xpath语法总结

    xpath语法 1. 什么是XPath? XPath是一种XML路径,用于浏览页面的HTML结构.他是一种语法或者语言用来查找使用XML路径表达的网页中的任意元素. XPath的基本形式如下: Xpa ...

  9. webdriver中常用的API(1)

    文章目录 一.API讲解 二.元素的定位 1.使用id定位元素 2.使用name定位元素 3.使用class_name定位元素 4.使用link text,partial link text定位元素 ...

最新文章

  1. 快递物流查询接口介绍
  2. Codeforces Round #403 (Div. 1, based on Technocup 2017 Finals)
  3. Delphi从Internet下载文件
  4. netty依赖_高性能:《一遍文章带你看懂 Netty世界》
  5. 算法分析设计--递归算法
  6. 数据库查询字段为空时,返回0
  7. 数据结构与算法——二分查找与二叉查找树汇总整理
  8. linux批量重命名脚本,Linux批量命名文件SH脚本整理
  9. js生成vCard,以及格式参数详细说明
  10. DID会固定年份吗_倍分法DID详解 (二):多时点 DID (渐进DID)
  11. 深度学习自学(二十五):目标跟踪
  12. W-3 用grub4dos安装Windows7、Ubuntu 12.10双系统(图解)
  13. 迷途的羔羊?-SBO市场发展之我见
  14. Python3,10行代码,给pdf文件去水印,再也不用花费冤枉钱了。
  15. 【设计】二极管-稳压管稳压电路
  16. 【众说区块链】公链是否一定要发币,Token到底应该怎么理解?
  17. 丁鹿学堂:前端http面试总结,状态码详解
  18. 渗透测试安全检测漏洞
  19. 百度产品笔试题 答案
  20. java实现请求排队处理_【高并发】秒杀系统高并发请求排队处理

热门文章

  1. 乐理小课堂——自然/和声/旋律小调的调式音阶
  2. 新手LInux 安装 Mysql 5.7.31版本 注意事项
  3. 绝对剩余价值和相对剩余价值举例
  4. 【红宝书笔记精简版】 第二十四章 网络请求与远程资源
  5. 一、微信小程序集成Vant Weapp
  6. BossCMSV1.0代码审计
  7. 看完这篇AI算法和笔记,跟面试官扯皮没问题了 | 基于深度学习和传统算法的人体姿态估计...
  8. 2016捡漏——东野圭吾
  9. python自动化(三):selenium微博抢票(含抢票程序设计思路)
  10. Android机型适配问题——Camera拍照时快门咔嚓声