前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

Python +Selenium Xpath选择器(python selenium select)

Xpath选择器

1、Xpath语法简介

前面我们学习了CSS选择元素。

大家可以发现非常灵活、强大。

还有一种灵活、强大地选择元素的方式,就是使用 Xpath 表达式。

XPath(XMLPathLanguage)是由国际标准化组织W3C指定的,用来在XML和HTML文档中选择节点的语言。

目前主流浏览器(Chrome、Firefox,Edge,Safari)都支持XPath语法,xpath有1和2两个版本,目前浏览器支持的是xpath1的语法。

既然已经有了CSS,为什么还要学习Xpath呢?因为

有些场景用css选择web元素很麻烦,而xpath却比较方便。

另外Xpath还有其他领域会使用到,比如爬虫框架Scrapy,手机App框架Appium。

请大家打开这个网址 http://f.python3.vip/webauto/test1.html

按F12打开调试窗口,点击Elements标签。

要验证Xpath语法是否能成功选择元素,也可以像验证CSS语法那样,按组合键Ctrl+F,就会出现搜索框

xpath语法中,整个HTML文档根节点用’/’表示,如果我们想选择的是根节点下面的html节点,则可以在搜索框输入

/html

如果输入下面的表达式

/html/body/div

这个表达式表示选择html下面的body下面的div元素。

注意 / 有点像CSS中的 > ,表示直接的节点关系。

2、绝对路径选择

从根节点开始的,到某个节点,每层都依次写下来,每层之间用 / 分隔的表达式,就是某元素的 绝对路径

上面的xpath表达式

/html/body/div

就是一个绝对路径的xpath表达式,等价于css表达式

html>body>div



或者

find_elements_by_xpath

举例:

elements=driver.find_elements_by_xpath("/html/body/div")

3、相对路径选择

有的时候,我们需要选择网页中某个元素, 不管它在什么位置 。

比如,选择示例页面的所有标签名为 div 的元素,如果使用css表达式,直接写一个 div 就行了。

那xpath怎么实现同样的功能呢?xpath需要前面加 // ,表示从当前节点往下寻找所有的后代元素,不管它在什么位置。

所以xpath表达式,应该这样写:

//div

’//’符号也可以继续加在后面,比如,要选择所有的div元素里面的所有的p元素,不管div在什么位置,也不管p元素在div下面的什么位置,则可以这样写

//div//p

对应的自动化程序如下

elements=driver.find_elements_by_xpath("//div//p")

如果使用CSS选择器,对应代码如下

elements=driver.find_elements_by_css_selector("divp")

如果,要选择所有的div元素里面的直接子节点p,xpath,就应该这样写了

//div/p

如果使用CSS选择器,则为

div>p

通配符

如果要选择所有div节点的所有直接子节点,可以使用表达式 //div/*

* 是一个通配符,对应任意节点名的元素,等价于CSS选择器 div>*

代码如下:

elements=driver.find_elements_by_xpath("//div/*")
for element in elements:
  print(element.get_attribute('outerHTML'))

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言