Selenium2之XPath定位

练手使用的Demo页面下载地址:http://pan.baidu.com/s/1o6078MI

XPATH是一种选择器,XPATH在firefox中用firepath验证,XPATH常用符号说明 :

/ 表示绝对路径,绝对路径是指从根目录开始

// 表示相对路径 . 表示当前层

.. 表示上一层

* 表示通配符

@ 表示属性

[] 属性的判断条件表达式

在Demo上演示如下内容:

? /html/div ,没有节点可以被选择,因为/如果用在中间,表示绝对路径,是上一个节点的子结点,而html的子节点是head与body

? /html//div ,表示选择根目录下的所有的子孙后代节点中的div节点,//表示相对路径

? //div ,表示选择所有的div节点,可以想想/html//div与//div为什么结果是一样的!

? //div/div ,表示选择所有的div节点的子节点中含有div的节点

? //div/div/. ,表示选择//div/div节点的当前层的节点,与//div/div的结果相同

? //div/div/.. ,表示选择//div/div节点的上一层节点,也就是选择一个div节点,该div节点的子节点有div节点。有点绕口,但细细理 解,会恍然大悟的

? //div/div/* ,表示选择//div/div的所有子节点,//div/div会有两个匹配出来的节点,但为什么//div/div/*只有一个了呢?这是因为 第二个//div/div下面没有子节点了,所以只匹配出来了一个

? //div[@id=‘input‘] ,表示选择一个id为’input’的div节点

? //div[@id=‘input‘]/input ,表示选择一个id为’input’的div节点的input子节点

? //table//input[@id=‘user‘] ,表示选择table的子孙后代中id为user的input节点

? //input[@name=‘identity‘ and @class=‘Volvo‘] ,有的节点,只用一个属性无法定位出来,必须要用到多个属性进行组合定位, 用连接符and。这个XPATH表示选择一个name为identity并且class为Volvo的input节点

? //input[@name=‘identity‘ or @class=‘Volvo‘] ,这个多属性组合用的是or的连接符,这个XPATH表示选择一个name为identity ,或者class为Volvo的节点,所以,这个XPATH匹配出来了4个节点

? //input[@name=‘identity‘ or @class=‘Volvo‘][1] ,我们刚知道了,//input[@name=‘identity‘ or @class=‘Volvo‘]匹配 出4个,我们只需要第一个,怎么办?加index即可://input[@name=‘identity‘ or @class=‘Volvo‘][1],请注意,xpath的index是 以1开头的,并不是0,请切记!

? 取最后一个,//input[@name=‘identity‘ or @class=‘Volvo‘][last()]

XPath的几个常用函数:

1. contains (): //div[contains(@id,‘in‘)]  ,表示选择id中包含有’in’的div节点

2. text():由于一个节点的文本值不属于属性,比如“<a class=”baidu“ href=”http://www.baidu.com“>baidu</a>”, 所以,用text()函数来匹配节点://a[text()=‘baidu‘]

3. last():前面已介绍

4. starts-with(): //div[starts-with(@id,‘in‘)] ,表示选择以’in’开头的id属性的div节点

5. not()函数,表示否定,//input[@name=‘identity’ and not(contains(@class,‘a’))] ,表示匹配出name为identity并且 class的值中不包含a的input节点。 not()函数通常与返回值为true or false的函数组合起来用,比如contains(),starts-with()等 ,但有一种特别情况请注意一下:我们要匹配出input节点含有id属性的,写法如下://input[@id],如果我们要匹配出input 节点不含用id属性的,则为://input[not(@id)]

时间: 2024-09-30 08:48:50

Selenium2之XPath定位的相关文章

Selenium2+Python3.6实战(八):定位下拉菜单出错,如何解决?用select或xpath定位。

在登录界面,有时候会有几种不同的角色,针对不同角色定位到的信息是不一样的.查询资料知道定位下拉框的元素有两种方式:Xpath和select. 但是使用xpath定位时,user定位到了,登录的时候却是调用的administrator,很是费脑.几经周折,终于解决了. 1.关于user用户xpath定位:用selenium IDE录制了登录过程,查看代码才发现并没有定位到user上,而是直接输入密码登录的.这让我想到,user是默认的用户,当进入登录界面时,网页默认的用户就是user,所以可以省略

用XPath精确定位节点元素&amp;selenium使用Xpath定位之完整篇

在利用XSL进行转换的过程中,匹配的概念非常重要.在模板声明语句 xsl:template match = ""和模板应用语句xsl:apply-templates select = "" 中,用引号括起来的部分必须能够精确地定位节点.具体的定位方法则在XPath中给出. 之所以要在XSL中引入XPath的概念,目的就是为了在匹配XML文档结构树时能够准确地找到某一个节点元素.可以把XPath比作文件管理路 径:通过文件管理路径,可以按照一定的规则查找到所需要的文件

python selenium xpath定位时使用变量

driver.find_element_by_xpath(input[@id = "kw"]) 上面的代码,相信很多学习selenium + python 的朋友都很熟悉,就是定位百度首页搜索框的代码,如果我们想把"kw",用一个变量来表示该怎么操作呢? 目前,我知道的有两种方法,如下,是定位百度搜索框,点击搜索的代码,在XPath定位的过程中,用了变量: # encoding:utf-8 from selenium import webdriver import

appium的xpath定位

做自动化,元素定位是我们遇到的第一个困难.总是会有各种各样的问题,导致我们定位不到元素.前面一篇博客也写了元素定位的几种方法,今天主要分享一下xpath的定位方法. 这里我们仍然拿计算器举例. 比如我这里想去定位这个数字1的按钮. 首先打开UIuiautomatorviewer 我们鼠标点击一下数字7可以看到这个按钮的位置.我们上一篇中也说到了,在元素的属性中,class就是xpath的地址,我们是可以通过class来写xpath的. 那么这里我们就可以写成: find_element_by_x

java selenium (六) XPath 定位

什么是xpath xpath 是XML Path的简称, 由于HTML文档本身就是一个标准的XML页面,所以我们可以使用Xpath 的用法来定位页面元素. xpath定位的缺点 xpath 这种定位方式, webdriver会将整个页面的所有元素进行扫描以定位我们所需要的元素, 这是个非常费时的操作,  如果脚本中大量使用xpath做元素定位的话, 脚本的执行速度可能会稍慢 testXpath.html 代码如下 <html> <head><title>Test Xpa

selenium+python自动化之xpath定位

在上一篇简单的介绍了用工具查看目标元素的xpath地址,工具查看比较死板,不够灵活,有时候直接复制粘贴会定位不到.这个时候就需要自己手动的去写xpath了,这一篇详细讲解xpath的一些语法. 什么是xpath呢?官方介绍:XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言.反正小编看这个介绍是云里雾里的,通俗一点讲就是通过元素的路径来查找到这个元素的,相当于通过定位一个对象的坐标,来找到这个对象. 一. xpath:属性定位 xptah也可以通

Xpath定位大全

selenium使用Xpath定位之完整篇 其中有一片文章提到了xpath元素定位,但是该文章中有些并不能适应一些特殊与个性化的场景.在文本中提供xpath元素的定位终极篇,你一定能在这里找到你需要的解决办法. 第一种方法:通过绝对路径做定位(相信大家不会使用这种方式) By.xpath("html/body/div/form/input") By.xpath("//input") 第三种方法:通过元素索引定位 By.xpath("//input[4]&q

Selenium-Python学习——通过XPath定位元素

用Xpath定位元素的方法总是记不住,经常要翻出各种文档链接参考,干脆把需要用到的内容整到这个笔记中方便查找. Xpath是在XML文档中定位节点的语言.使用 XPath 的主要原因之一是当想要查找的元素缺少合适的 id 或name属性.XPath定位器可以用来绝对或相对定位缺少id或name属性的元素,也可以是用其他属性进行定位. 通过XPath定位的元素容易受html调整的影响,可以先通过id或name属性找到就近的元素,如父元素,用以加强测试脚本的稳定性. 例如,源文件如下: <html>

selenium自学笔记---ecshop购买脚本 xpath定位元素(下拉框,单选框)

本机环境:xamppv3.2.1+ecshop3.0  1.元素定位写对,却一直报错,发现是页面元素加载的太慢,所以加上延时 from selenium import webdriverimport timedriver=webdriver.Chrome()driver.implicitly_wait(10) #自动延时10sdriver.get("http://localhost/ecshop")# driver.find_element_by_xpath('//div[@class