Selenium - Xpath 使用方法

由于最新版火狐不在支持FireBug等开发工具,可以通过https://ftp.mozilla.org/pub/firefox/releases/下载49版本以下的火狐就可以增加Firebug等扩展了。

什么是Xpath?

XPath是XML的路径语言,通俗一点讲就是通过元素的路径来查找到这个标签元素。

工具

Xpath可以下载火狐浏览器插件FireBug

用法:

1. /(绝对路径,从根节点选取) 
2. //(相对路径,所有子代节点,不用考虑是否直接子节点) 
3. @ 选取属性 
4. “.”选取当前节点 
5. “..”选取当前节点的父节点

使用方法:

注://* 代表定位页面下所有元素,固定模式 @引用某样属性 id =‘xxx‘

1、Xpath支持ID、Class、Name定位功能,将 * 换位任意标签名,则可根据标签进行筛选

通过ID定位

//*[@id=‘i1‘]
//div[@id=‘i2‘]

通过Class定位

//*[@class=‘inner‘]
//div[@class=‘inner1‘]

通过Name定位

//*[@name=‘name‘]
//input[@name=‘name‘]
class包含xxx的div
//div[contains(@class,’xxx’)] 

2. 如果标签没有ID、Class、Name三总属性,Xpath还支持属性定位功能

//*[@placeholder=‘请输入用户名‘]

3. 当标签页重复时,Xpath提供了层级过滤

支持通过 / 进行层级递进,找到符合层级关系的标签
//input[@value=text][8]  ->>第8个input的value=text

//div[@class=‘inner‘][3]/input[@type=‘text‘]
当层级都重复时,可以通过单个层级的属性进行定位

//div[@class=‘driver‘][1]/div[@class=‘inner‘][3]/input

4. 一个元素它的兄弟元素跟它的标签一样,这时候无法通过层级定位到。因为都是一个父亲生的,多胞胎兄弟。Xpath提供了索引过滤

通过索引,在List中定位属性,与python的索引有些差别,Xpath从1开始

//select[@name=‘city‘][1]/option[1]

5. 上面集中如果都用上了之后还重复的话,我们就可以使用Xpath提供的终极神器,逻辑运算定位。and 或 or

通过and来缩小过滤的范围,只有条件都符合时才能定位到

//select[@name=‘city‘ and @size=‘4‘ and @multiple="multiple"]

or就相反了,只要这些筛选中,其中一个出现那么久匹配到了

//select[@name=‘city‘ or @size=‘4‘]

Xpath拓展

following-sibling: 选择当前节点之后的所有同级节点,那么没有加上“sibling”关键字的,搜索的就是之上/之下的所有节点,忽略同级概念,例如:

<div>
<input id="123">
<input>
</div>

要定位第二个input://input[@id=’123’]/following-sibling::input

  • preceding-sibling: 选取当前节点之前的所有同级节点
  • starts-with: 以某某开头,例如://input[starts-with(@class,’xxx’)]
  • 绝对路径 html/body/div/span[2]/input[2] 中间结构变化,就失效
  • 相对路径 //开始,在整个html source里找,不管在什么位置
  • 索引[x] //div/input[2] div下面第二个input
  • 完全匹配 xpath=//*[text()=”Join”]
  • not关键字 就是否定的意思 
    比如找一个id不为123的input:input[not[id=’123’]] 
    又如找一个文本中不包含xxx字段的span://span[not(contains(text(),’xxx’))]
  • 通配符 * 
    比如//span[@*=”xxx”]指定位span中任意属性包含xxx的 
    比如//[@=”xxx”]指定位页面中任意属性保护xxx的标签

原文地址:https://www.cnblogs.com/nancyzhu/p/8947339.html

时间: 2024-10-14 22:32:18

Selenium - Xpath 使用方法的相关文章

web自动化测试-D3-学习笔记之一(Selenium彩蛋篇-Xpath使用方法)

由于最新版火狐不在支持FireBug等开发工具,可以通过https://ftp.mozilla.org/pub/firefox/releases/下载49版本以下的火狐就可以增加Firebug等扩展了. 什么是Xpath? XPath是XML的路径语言,通俗一点讲就是通过元素的路径来查找到这个标签元素. 工具 Xpath的练习建议大家安装火狐浏览器后,下载插件,FireBug. Xpath使用方法 注:默认死格式 先写 //* 代表定位页面下所有元素 1.Xpath支持ID.Class.Name

selenium 之定位方法

1 id 定位 driver.find_element_by_id() HTML 规定id 属性在HTML 文档中必须是唯一的.这类似于公民的身份证号,具有很强的唯一性 from selenium import webdriverdriver = webdriver.Chrome()driver.get('http://ui.imdsx.cn/uitester/')driver.maximize_window() #最大化当前窗口driver.execute_script('window.scr

元素定位-XPATH定位方法总结

1.Xpath定位方法探讨 xpath是比较常用的一种定位元素的方式,因为它很方便,缺点是,消耗系统性能.如果Xpath使用的比较好,几乎可以定位到任何页面元素,而且受页面变化影响较小. 1.1.什么是XPATH: XPath (XML Path Language) 是一门在 HTML文档中查找信息的语言,可用来在 HTML文档中对元素和属性进行遍历. 详细使用方法可见 W3School官方文档:http://www.w3school.com.cn/xpath/index.asp 1.2.XPA

Xpath使用方法

由于最新版火狐不在支持FireBug等开发工具,可以通过https://ftp.mozilla.org/pub/firefox/releases/下载49版本以下的火狐就可以增加Firebug等扩展了. 什么是Xpath? XPath是XML的路径语言,通俗一点讲就是通过元素的路径来查找到这个标签元素. 工具 Xpath的练习建议大家安装火狐浏览器后,下载插件,FireBug. Xpath使用方法 注:默认死格式 先写 //* 代表定位页面下所有元素 1.Xpath支持ID.Class.Name

selenium爬取新闻做成词云(以及selenium的xpath查找方法)

一开始是想用qq空间说说做词云的,然而qq空间需要用cookies以及其他加密的东西,退而求其次搞搞新闻吧. 直接上代码了 # -*-coding:utf-8 -*- from selenium import webdriver import wordcloud #词云制作器 import jieba#强大的中文分词库 from scipy.misc import imread#读取图片 import time url='https://news.nuist.edu.cn/main.htm' n

Selenium学习之==&gt;Xpath使用方法

一.什么是Xpath XPath是XML的路径语言,通俗一点讲就是通过元素的路径来查找到这个标签元素. 工具 Xpath的练习建议大家安装火狐浏览器后,下载插件,FireBug.由于最新版火狐不再支持FireBug等开发工具,可以通过https://ftp.mozilla.org/pub/firefox/releases/下载49版本以下的火狐就可以增加Firebug等扩展了. 二.Xpath的使用方法 注:默认死格式 先写 //* 代表定位页面下所有元素 1.Xpath通过标签的属性定位 1

python selenium xpath定位时使用变量

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

selenium+xpath 文本信息定位

selenium中根据父子.兄弟.相邻节点定位的方法,很多人在实际应用中会遇到想定位的节点无法直接定位,需要通过附近节点来相对定位的问题,但从父节点定位子节点容易,从子节点定位父节点.定位一个节点的哥哥节点. 第一种方法:通过绝对路径做定位(相信大家不会使用这种方式) By.xpath("html/body/div/form/input") By.xpath("//input") 第三种方法:通过元素索引定位 By.xpath("//input[4]&qu

xpath定位方法详解

1.xpath较复杂的定位方法: 现在要引用id为“J_password”的input元素,可以像下面这样写: WebElement password = driver.findElement(By.xpath("//*[@id='J_login_form']/dl/dt/input[@id='J_password']")); 其中//*[@id=’ J_login_form’]这一段是指在根元素下查找任意id为J_login_form的元素,此时相当于引用到了form元素.后面的路径