您的位置:

XPathClass定位详解

一、XPath定位

XPath是一种用于选取XML文档中某些部分的语言。XPath通常用于在XML文档中搜索内容,或从XML文档中提取信息。在定位HTML元素时,XPath定位使用的是元素的属性和标签名。

from selenium import webdriver
 
# 创建浏览器对象
browser = webdriver.Chrome()
 
# 打开页面
browser.get('http://www.baidu.com')
 
# 根据元素的class属性定位
input_ele = browser.find_element_by_xpath('//input[@class="s_ipt"]')
 
# 根据元素的属性值定位,id="su"
search_btn = browser.find_element_by_xpath('//*[@id="su"]')

在以上示例代码中,我们主要是通过元素的class属性和id属性来定位元素。例如,我们通过find_element_by_xpath('//input[@class="s_ipt"]')来查找元素,其中 [@class="s_ipt"]表示class属性为s_ipt的元素。

二、XPath定位label元素

在一些表单提交场景中,我们需要先定位到该表单的label标签,再通过for属性和表单元素的id属性进行绑定,以便在页面上点击label标签时可自动选中相应的表单输入框。

from selenium import webdriver
 
# 创建浏览器对象
browser = webdriver.Chrome()
 
# 打开页面
browser.get('http://www.baidu.com')
 
# 根据label里的文字找到对应的input输入框
input_ele = browser.find_element_by_xpath('//label[contains(text(),"贴吧")]//following-sibling::input')

在以上示例代码中,我们通过contains函数匹配label标签中包含“贴吧”文字的元素,再通过//following-sibling::input找到该label标签后的input标签元素。

三、XPath定位img元素

在网页中,如果需要定位img标签元素,可以使用以下示例中的方法定位img元素。

from selenium import webdriver
 
# 创建浏览器对象
browser = webdriver.Chrome()
 
# 打开页面
browser.get('http://www.taobao.com')
 
# 根据元素的标签名和属性值定位,
img_ele = browser.find_element_by_xpath('//img[@alt="超值惠选"]')

在以上示例代码中,我们通过查找alt属性为“超值惠选”的img标签元素。

四、XPath定位是什么

XPath定位是一种用于选取XML文档中某些部分的语言,在定位HTML元素时,XPath使用的是元素的属性和标签名。XPath可以根据不同的情况选用不同的方法来定位元素,如根据标签名、class、id、属性值等进行定位。

五、XPath和CSS定位选取

在定位网页元素时,开发人员可以使用CSS和XPath两种语言进行选取。两种语言各有优缺点,使用时需视情况而定。对于开发人员来说,使用CSS定位更简单,而且在执行速度上也稍微快一些。

from selenium import webdriver
 
# 创建浏览器对象
browser = webdriver.Chrome()
 
# 打开页面
browser.get('http://www.baidu.com')
 
# 根据元素的class属性定位
input_ele = browser.find_element_by_css_selector('.s_ipt')
 
# 根据标签名和属性值定位
search_btn = browser.find_element_by_css_selector('input[id="su"]')

在以上示例代码中我们通过.find_element_by_css_selector方法来定位元素,并且我们发现通过CSS定位元素更简单。例如,我们可以直接使用.find_element_by_css_selector('.s_ipt')来根据class属性定位元素,而无需使用XPath语言的类选择器(.//input[@class="s_ipt"])。