Python3-Selenium自动化测试框架(三)之xpath元素定位

Selenium自动化测试框架(三)之xpath元素定位

xpath元素定位

节点(Node)

在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档节点(或称为根节点)。

选取节点

XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。

谓语(Predicates)

谓语用来查找某个特定的节点或者包含某个指定的值的节点。
谓语被嵌在方括号中。

路径表达式:

表达式 描述
/ 从根节点选取
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
@ 选取属性。

选取未知节点
XPath 通配符可用来选取未知的 XML 元素。

通配符 描述
* 匹配任何元素节点。
@* 匹配任何属性节点。

选取若干路径
通过在路径表达式中使用“|”运算符,您可以选取若干个路径。

//div | //a

在python中使用xpath定位元素:

browser.find_element_by_xpath("//input[@id='kw']")

1、通过id属性进行定位元素(如果不知道具体的标签名可以用通配符*代替)
//*[@id='kw']
//input[@id='kw']

//a[@id='quickdelete']
2、通过name属性进行定位元素
//input[@name='wd']
3、通过class属性进行定位元素
//input[@class='s_ipt']

//a[@class='quickdelete']
4、通过id和class属性进行定位元素(多个属性一起定位的时候用and隔开)
//input[@id='kw' and @class='s_ipt']

//a[@id='quickdelete' and @class='quickdelete']

contains()函数,xpath其他函数

上面这个div中的class中的属性值为‘s-skin-hasbg white-logo s-opacity-0‘,属性中有空格,这个时候就没办法使用[@class=‘s-skin-hasbg white-logo s-opacity-0‘],
这个时候就需要使用xpath中的contains函数进行操作,只需要属性值中的一部分就可以实现元素定位。

//div[contains(@class,'white-logo')]

text文本定位

text 文本在 web 自动化测试当中,不是元素属性,
不能使用 @符号去表示。

通过text()进行定位元素
//*[contains(text(),'新')]

索引

  • xpath中索引是以1开始的。
  • 一般来说,我们不会去使用 索引进行元素定位
  • 索引的优先级非常高,手工提升其他部分的优先级,最后才使用索引。
//*[contains(text(),'新')][1]

组合上下级的关系

  • /表示父子关系
  • //表示子孙关系
# 通过父级元素定位到下面的所有的img元素
//div[@id='lg']//img
# 精确到某一个img
//div[@id='lg']//img[@id='s_lg_img']

xpath轴:轴可定义相对于当前节点的节点集。

# ancestor--选取当前节点的所有先辈(父、祖父等)。
//div[@class='show-weather']//ancestor::*

# ancestor-or-self--选取当前节点的所有先辈(父、祖父等)以及当前节点本身。
//div[@class='show-weather']//ancestor-or-self::*

# attribute--选取当前节点的所有属性。
//div[@class='show-weather']//attribute::*

# child--选取当前节点的所有子元素。
//div[@class='show-weather']//child::*

# descendant--选取当前节点的所有后代元素(子、孙等)。
//div[@class='show-weather']//descendant::*

# descendant-or-self--选取当前节点的所有后代元素(子、孙等)以及当前节点本身。
//div[@class='show-weather']//descendant-or-self::*

# following--选取文档中当前节点的结束标签之后的所有节点。
//div[@class='show-weather']//following::*

# parent--选取当前节点的父节点。
//div[@class='show-weather']//parent::*

# preceding--选取文档中当前节点的开始标签之前的所有节点。
//div[@class='show-weather']//preceding::*

# preceding-sibling--选取当前节点之前的所有同级节点。
//div[@class='show-weather']//preceding-sibling::*

# self--选取当前节点。
//div[@class='show-weather']//self::*

什么时候使用 xpath

没有明显特征(id, name, class_name)的元素
name、class_name能找到多个元素

css 和 xpath 的区别

1、css 更加简洁
2、xpath 的功能更强大。对于简单的元素定位可以使用css, 复杂的元素使用xpath.
3、xpath 可以使用 text 文本定位, css 不行。
4、效率。通常来说,xpath 的解析效率会低。css 要快一些。

【完】



Python3-Selenium自动化测试框架(三)之xpath元素定位

原文地址:https://www.cnblogs.com/desireyang/p/12171908.html

时间: 2024-10-08 03:39:07

Python3-Selenium自动化测试框架(三)之xpath元素定位的相关文章

selenium自动化测试——常见的八种元素定位方法

selenium常用的八种元素定位方法 1.通过 id 定位:find_element_by_id() 2.通过 name 定位:find_element_by_name() 3.通过 tag 定位:find_element_by_tag_name() 4.通过 class 定位:find_element_by_class_name() 5.通过 css 定位:find_element_by_css_selector() 6.通过 link 定位:find_element_by_link_tex

Python3.x:Selenium中的webdriver进行页面元素定位

Python3.x:Selenium中的webdriver进行页面元素定位 页面上的元素就像人一样,有各种属性,比如元素名字,元素id,元素属性(class属性,name属性)等等.webdriver就是利用元素的这些属性来进行定位的. 可以用于定位的常用的元素属性: id name class name tag name link text partial link text xpath css selector 对应于webdriver中的定位一个元素方法分别是: driver.find_e

selenium自动化测试框架之PO设计模式

面向对象的特性:封装.继承.多态.在自动化中一样适用,Selenium自动化测试中有一个名字常常被提及PageObject(思想与面向对象的特性相同),通过PO模式可以大大提高测试用例的维护效率. ##传统测试脚本的弊端 测试脚本分离,维护成本高 可扩展性差 复用性低等 PageObject设计模式 PO的核心要素: 在PO模式中抽象封装成一个BasePage类,该基类应该拥有一个只实现webdriver实例的属性. 每个一个page都继承BasePage,通过driver来管理本page中元素

selenium + python自动化测试unittest框架学习(三)webdriver元素定位(一)

1.Webdriver原理 webdirver是一款web自动化操作工具,为浏览器提供统一的webdriver接口,由client也就是我们的测试脚本提交请求,remote server浏览器进行响应请求,相对于原来selenium1中的selenium rc更加的简便,对浏览器的操作更加灵活. 2.定位 (1)元素的定位: 元素的定位可以通过id,name,class name,tag name,link_text,partial_link_text,css selector,xpath等 语

Selenium自动化测试Python三:WebDriver进阶

WebDriver 进阶 欢迎阅读WebDriver进阶讲义.本篇讲义将会重点介绍Selenium WebDriver API的重点使用方法,以及使用模块化和参数化进行自动化测试的设计. WebDriver API 进阶使用 元素定位 从之前的讲义和学习中,我们知道,WebDriver API的调用以及自动化测试,务必从页面元素的定位开始,那么回顾之前的内容,WebDriver提供了一系列的定位符以便使用元素定位方法.常见的定位符有以下几种: id name class name tag lin

Python + Selenium(三)网页元素定位(二)id 定位

了解了开发者工具和 HTML 结构 后,接下来,就来看看在 Python + Selenium 中如何查找元素了. 查找元素,是 WebDriver 中的核心部分之一.WebDriver提供了八种定位方法,方法如下: 定位方式 方法 说明 id find_element_by_id() 使用 id 属性定位 name find_element_by_name() 使用 name 属性定位 class_name find_element_by_class_name() 使用 class 属性定位

Selenium+Python自动化测试实战(2)元素定位

1.Selenium2 的原理 第一篇分享简单介绍了基于Python开发的Selenium2的环境配置,这篇主要讲一下基本用法.首先讲一下Selenium2的基本原理.基本上知道了这个东西是怎么回事,我们就知道怎么去用它做自动化测试. 与Selenium和Selenium RC不同,Selenium2将浏览器原生的API封装成WebDriver API,可以直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的),所以就像真正的用户在操作一样.其实刚

Selenium自动化测试框架的搭建

说 起自动化测试,我想大家都会有个疑问,要不要做自动化测试? 自动化测试给我们带来的收益是否会超出在建设时所投入的成本,这个嘛别说是我,即便是高手也很难回答,自动化测试的初衷是美好的,而测试工程师往往在实现 过程中花费了很多成本.精力,而最终以失败告终. 失败的原因会很多,我总结几项: 1.   太过依赖测试工具,高估了工具的力量,最终会以失望告终. 2.    项目紧急的情况,为了规避那些多余的环节,干脆人工测试,结果整个链路中断. 3.    研发和测试人员不能很好的交互,如果这两个角色之间

Python+Selenium学习(三)-Xpath的使用

今天学习了几个关于自动化的概念. 元素,网页元素(web element).在页面上面的文本输入框.按钮.多选.单选.标签.和文字都叫元素,总之,凡是能在页面显示的对象都可以作文页面元素对象. 元素定位,有时候也叫Locator,一个HTML页面元素,可以用很多方法描述这样元素的位置.网页元素有自己的位置,可以通过一些手段或者表达式去描述这个元素的页面对应位置. XPath,XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言.XPath基于XML