彻底学会Selenium元素定位( 三 )

使用浏览器开发者工具直接复制xpath路径值(偷懒的方法,不推荐在学习的时候使用):

彻底学会Selenium元素定位

文章插图
通过元素属性定位单个属性使用目标元素的任意一个属性和属性值(需保证唯一性) 。
注意:
使用 XPath 策略,建议先在浏览器开发者工具中根据策略语法,组装策略值 , 测试验证后再放入代码中使用 。
目标元素的有些属性和属性值可能存在多个相同特征的元素,需注意唯一性 。
语法:
driver.find_element(By.XPATH, "//标签名[@属性='属性值']")driver.find_element(By.XPATH, "//*[@属性='属性值']")比如:下面这个input标签的placeholder属性的属性值为“请输入你要查找的关键字”
<input class="but1" type="text" name="key" placeholder="请输入你要查找的关键字">举栗:
# author: 测试蔡坨坨# datetime: 2022/10/23 17:27# function: 单个属性import timefrom selenium import webdriverfrom selenium.webdriver.common.by import Bydriver = webdriver.Chrome()driver.get("http://127.0.0.1")driver.maximize_window()# 通过单个属性匹配driver.find_element(By.XPATH, "//input[@placeholder='请输入你要查找的关键字']").send_keys("测试蔡坨坨")多个属性通过多个属性和属性值进行匹配 , 解决单个属性和属性值无法定位元素唯一性的问题 。
多个属性可由多个 and 连接,每一个属性都要以 @ 开头 , 可以根据需求使用更多属性值 。
语法:
driver.find_element(By.XPATH, "//标签名[@属性1='属性值1' and @属性2='属性值2']")driver.find_element(By.XPATH, "//*[@属性1='属性值1' and @属性2='属性值2']")比如:下面这个input标签的class属性的属性值为"but1",placeholder属性的属性值为"请输入你要查找的关键字"
<input class="but1" type="text" name="key" placeholder="请输入你要查找的关键字" value="">举栗:
# author: 测试蔡坨坨# datetime: 2022/10/23 17:38# function: 多个属性匹配import timefrom selenium import webdriverfrom selenium.webdriver.common.by import Bydriver = webdriver.Chrome()driver.get("http://127.0.0.1")driver.maximize_window()# 通过多个属性匹配driver.find_element(By.XPATH, "//input[@class='but1' and @placeholder='请输入你要查找的关键字']").send_keys("测试蔡坨坨")通过属性模糊匹配通过属性值的部分内容进行匹配 。
语法:
driver.find_element(By.XPATH, "//标签名[contains(@属性,'属性值的部分内容')]")driver.find_element(By.XPATH, "//*[contains(@属性,'属性值的部分内容')]")比如:下面这个input标签的placeholder属性的属性值为"请输入你要查找的关键字",模糊匹配就可以是"请输入"
<input class="but1" type="text" name="key" placeholder="请输入你要查找的关键字">举栗:
# author: 测试蔡坨坨# datetime: 2022/10/23 17:41# function: contains模糊匹配import timefrom selenium import webdriverfrom selenium.webdriver.common.by import Bydriver = webdriver.Chrome()driver.get("http://127.0.0.1")driver.maximize_window()# 通过contains模糊匹配属性值driver.find_element(By.XPATH, "//input[contains(@placeholder,'请输入')]").send_keys("测试蔡坨坨")starts-with属性值以XX开头语法:
driver.find_element(By.XPATH, "//标签名[starts-with(@属性,'属性值的开头部分')]")driver.find_element(By.XPATH, "//*[starts-with(@属性,'属性值的开头部分')]")比如:下面这个input标签的placeholder属性的属性值以"请输入"开头
<input class="but1" type="text" name="key" placeholder="请输入你要查找的关键字">举栗:
# author: 测试蔡坨坨# datetime: 2022/10/23 18:01# function: starts-with定位属性值以xxx开头的元素from selenium import webdriverfrom selenium.webdriver.common.by import Bydriver = webdriver.Chrome()driver.get("http://127.0.0.1")driver.maximize_window()driver.find_element(By.XPATH, "//input[starts-with(@placeholder,'请输入')]").send_keys("测试蔡坨坨")文本值定位通过标签的文本值进行定位,定位文本值等于XX的元素,一般适用于p标签、a标签 。
语法:
driver.find_element(By.XPATH, "//*[text()='文本信息']")比如:下面这个a标签的文本信息为"免费注册"
<a href="http://127.0.0.1/register">免费注册</a>举栗:
# author: 测试蔡坨坨# datetime: 2022/10/23 17:41# function: text()文本信息定位from selenium import webdriverfrom selenium.webdriver.common.by import Bydriver = webdriver.Chrome()driver.get("http://127.0.0.1")driver.maximize_window()driver.find_element(By.XPATH, "//*[text()='免费注册']").click()

推荐阅读