在Selenium Webdriver中使用XPath Contains、Sibling函数定位
前言
在一般情况下,我们通过简单的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常用函数
- child 选取当前节点的所有子节点
- parent 选取当前节点的父节点
- descendant 选取当前节点的所有后代节点
- ancestor 选取当前节点的所有先辈节点
- descendant-or-self 选取当前节点的所有后代节点及当前节点本身
- ancestor-or-self 选取当前节点所有先辈节点及当前节点本身
- preceding-sibling 选取当前节点之前的所有同级节点
- following-sibling 选取当前节点之后的所有同级节点
- preceding 选取当前节点的开始标签之前的所有节点
- following 选去当前节点的开始标签之后的所有节点
- self 选取当前节点
- attribute 选取当前节点的所有属性
- namespace 选取当前节点的所有命名空间节点
在Selenium Webdriver中使用XPath Contains、Sibling函数定位相关推荐
- Selenium webdriver中的xpath定位
使用selenium进行自动化测试,其实很多时候就是模拟用户的操作,在前端页面对元素进行操作,因此元素的定位在自动化测试中是至关重要的.关于如何 使用id,className,name,linkTex ...
- Selenium WebDriver中的TestNG侦听器及示例
Java提供了不同的接口,使您可以修改TestNG行为. 这些接口在Selenium WebDriver中进一步称为TestNG侦听器. TestNG Listeners还允许您根据项目要求自定义测试 ...
- 总结Selenium WebDriver中一些鼠标和键盘事件的使用
在使用 Selenium WebDriver 做自动化测试的时候,会经常模拟鼠标和键盘的一些行为.比如使用鼠标单击.双击.右击.拖拽等动作:或者键盘输入.快捷键使用.组合键使用等模拟键盘的操作.在 W ...
- 使用Python在Selenium WebDriver中获取WebElement的HTML源代码
我正在使用Python绑定来运行Selenium WebDriver. from selenium import webdriver wd = webdriver.Firefox() 我知道我可以抓住 ...
- selenium webdriver中执行js(java)
在代码中import org.openqa.selenium.JavascriptExecutor;就可以使用executeScript.executeAsyncScript这两个方法了 execut ...
- java selenium iframe_如何使用java在Selenium WebDriver中处理iframe
4t43t4 在这种情况下,iframe下有一个iframe.我必须选择外部iframe去内部iframe并写入内部iframe中的主体. 接下来,我必须从内部iframe到外部iframe,然后单击 ...
- selenium拖动元素java_使用Java在Selenium WebDriver中聚焦元素的正确方法
下面的代码 – element.sendKeys(""); 尝试找到一个输入标签框来输入一些信息,而 新操作(驱动程序).moveToElement(元素).perform(); ...
- python selenium语法_selenium之xpath语法总结
xpath语法 1. 什么是XPath? XPath是一种XML路径,用于浏览页面的HTML结构.他是一种语法或者语言用来查找使用XML路径表达的网页中的任意元素. XPath的基本形式如下: Xpa ...
- webdriver中常用的API(1)
文章目录 一.API讲解 二.元素的定位 1.使用id定位元素 2.使用name定位元素 3.使用class_name定位元素 4.使用link text,partial link text定位元素 ...
最新文章
- VMware vSphere@cloudstack基本功能测试报告
- ASP.Net MVC Relational KeyWord 4 Google 【More...】【欢迎补充】
- JavaScript之使用AJAX(适合初学者)
- CF750F. New Year and Finding Roots
- 18--两数之和 II - 输入有序数组
- 友元是c还是java_[C++]【类】友元的三种声明及注意事项
- 深入Java中文问题及最优解决方法-下(转)
- 她拒绝麦肯锡 Offer,建立图片训练数据库,斯坦福 AI 实验室负责人 | 人物志
- UInput使用注意事项
- SQL语句常用优化技巧
- 分布式存储系统学习笔记(一)—什么是分布式系统(3)—复制
- java面试笔试大全
- SEO助手-免费万能SEO网站优化小助手
- JAVA中LIST 和 MAP的区别
- ybt1373 鱼塘钓鱼
- 问题1038:宋小胖买切糕
- 蒟蒻的控制台贪吃蛇(新手实验)
- gucci红包封面怎么抽 gucci红包封面怎么领取
- 中职学校计算机专业宣传口号,中职学校文明宣传标语
- Java:利用接口实现打印机案例(墨盒有彩色和黑白色,纸张有A4纸和B5纸)
热门文章
- [0x7FFE1E17E050] ANOMALY: meaningless REX prefix used
- 第三周个人所得税计算器
- potplayer使用Potplayer+LAVFilters+madVR设置后播放mkv视频只有画面没声音解决办法
- 【论文阅读】 The Honey Badger of BFT Protocols
- datagridview中读取数据判断+考勤每月上班天数判断
- Wayback Machine – 带你穿越互联网,找回消失的网页
- 计算机电源中线分布,电子工程师必看!五大开关电源EMI抑制策略
- 运维各类工作时间占比
- 升级SpringCloud到Hoxton.SR3后使用Fegin出现jackson反序列化失败,源码分析,原因lombok版本升级
- 微信3.0.0 mac版