title: Xpath 定位汇总
date: 2019-12-27 16:42:00
tags: Xpath
author: YeXiaoXin
前言
本文主要介绍 Xpath 定位的语句语法,应用场景为Web、APP UI自动化的元素定位中。
文章参考-https://blog.csdn.net/zyooooxie/article/details/83856854
什么是Xpath
XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。
Xpath路径表达式
表达式 | 描述 |
---|---|
/ | 从跟节点开始选择 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置。 |
. | 选择当前节点 |
… | 选择当前节点的父节点 |
@ | 选取属性 |
* | 模糊匹配 |
Selenium web自动化测试 -Xpath定位
1、根据元素属性名和属性值定位
def test_16(self):
"""xpath 根据元素属性名和属性值来定位"""
# 通过元素的id、name、class这属性定位
driver = webdriver.Chrome()
driver.implicitly_wait(50)
driver.get("https://www.baidu.com")
# <input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
# xpath 通过id属性来定位
driver.find_element_by_xpath('//*[@id="kw"]').send_keys('python')
# xpath 通过name属性来定位
driver.find_element_by_xpath('//*[@name="wd"]').send_keys('python')
# xpath 通过class属性来定位
driver.find_element_by_xpath('//*[@class="s_ipt"]').send_keys('python')
# xpath 也可以通过 其他属性 定位
driver.find_element_by_xpath('//*[@autocomplete="off"]').send_keys('python')
time.sleep(1.5)
driver.quit()
一般来说,可以根据唯一id定位的元素不使用Xpath定位,所以第一种Xpath定位方法很少使用。
2、根据标签 + 元素属性名和值定位
def test_18a(self):
"""xpath 标签+ 元素属性名和属性值 组合定位"""
# 1.有时候同一个属性,同名的比较多,这时候可以通过标签筛选下,定位更准一点
# 2.如果不想制定标签名称,可以用*号表示任意标签
# 3.如果想制定具体某个标签,就可以直接写标签名称
driver = webdriver.Chrome()
driver.implicitly_wait(5)
driver.get("https://www.baidu.com")
# <input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
driver.find_element_by_xpath('//input[@autocomplete="off"]').send_keys('python')
driver.find_element_by_xpath('//input[@id="kw"]').send_keys('python')
driver.find_element_by_xpath('//input[@name="wd"]').send_keys('python')
time.sleep(1.5)
driver.quit()
3、根据 层级关系+索引定位
def test_19a(self):
"""xpath 层级-父定位子"""
driver = webdriver.Chrom