分享:selenium xpath

Posted yoyoma0355

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分享:selenium xpath相关的知识,希望对你有一定的参考价值。

xpath无所不能定位。  

https://www.w3.org/TR/xpath/all/#axes  

 两个神器:firebug、xpath-checker

 

举例:混合定位

  //td[a//front[contains(text(),"从零开始视频")]//input[@type=‘checkbox‘]

确认xpath是否是正确的:firefox==>F12==>控制台==》$x(".//*[@id=‘su‘]")
 

 

 

 第一部分:基础定位:

1。依靠自己属性,文本定位(当f元素的文本text(),属性@是唯一时用)

//td[text()=‘wangm‘]   #文本是唯一的td元素

//div[contains(@class,‘cux-rightarrowicon-on‘)]    #class属性的值是唯一的div元素

//input[@type=‘radio‘ and @value=‘1‘]   #两个属性一起确定一个元素

 

2。依靠父节点定位(当子节点没有唯一可定位的属性,但它的父节点却有唯一的属性时用)

 //div[@class=‘wangm‘]/div

//div[@id=‘wangm‘]/div

// div[@id=‘testid‘]/input

 

 

3。 依靠子节点定位(当父节点没有唯一定位的属性,但它的子节点有确定的值或者有确定的组合时)   

//div[div[@id=‘wangm‘]]   #中括号是用来描述父子关系的。

//div[div[@name=‘wangm‘]] 

//div[p[@name=‘testp‘]] 

 

 

4。 混合型(实际应用中复杂些)

//div[div[@name=‘listType‘]]/img    #先用name属性找到子节点div,定位其父div,找的是父div下的img元素。

 

 

 

第二部分:进阶定位:

兄弟姐妹节点 

following-sibling   #后面的兄妹节点

preceding-sibling  #

 

starts-with  #以什么内容开头  语法与contains一样。

contains   #包含什么内容

not 

 

 

//input[@id=‘1234‘] /following-sibling::input   #后面的兄妹input节点

//input[@id=‘1234‘] /preceding-sibling::span   #前面的兄妹sapn 节点

//input[starts-with(@id,123‘)]   #以123开头的Id属性的内容的input元素。

//span[not(contains(text(),‘xpath‘))]   #寻找text内容不包含xpath的span元素。

 

 

 

补充整理:

绝对路径 :html/body/div/span[2]/input[4]   中间结构变化,就失效

相对路径: //开始  在整个html source里找,不管在什么位置

 

索 引:[x]     如://div/input[2]  #div下面第2个input

                   误解://span[28]   #一个页面上虽然有28个span,但只有放在同一个根节点下才是span[28]能定位到。

 

关键字:position:索引也可以认为是一个position

             last 

 

 

//div[@id=‘test‘]/span 

 



以上是关于分享:selenium xpath的主要内容,如果未能解决你的问题,请参考以下文章

技术分享 | Selenium多浏览器处理

Appium appium+Android+selenium+python web 自动化 / 手机自动化 [分享] (windows)

干货分享Python的爬虫与Selenium库详细教程

2w元教学课程,免费分享,教你搞定selenium自动化框架封装!

#私藏项目实操分享#Python模拟登录,selenium模块,Python识别图形验证码实现自动登录

Python3+Selenium Web自动化测试案例分享⑹——unittest组织测试用例