使用浏览器开发者工具直接复制xpath路径值(偷懒的方法,不推荐在学习的时候使用):
文章插图
通过元素属性定位单个属性使用目标元素的任意一个属性和属性值(需保证唯一性) 。
注意:
使用 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()
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 三 Selenium+Python系列 - 常见浏览器操作
- 二 Selenium+Python系列 - 元素定位那些事
- selenium4-定位单个页面元素
- 怎么一天学会游泳,游泳教程(游泳老师教女神游泳)
- 如何能够快速的学会游泳(怎样迅速学会游泳)
- 跳舞机怎么玩?我是新手怎么学(怎么快速学会玩跳舞机)
- 魔改xxl-job,彻底告别手动配置任务!
- 新版微信怎么彻底删除微信好友方法(微信如何迁移微信好友)
- 如何学会全面刷机(什么叫刷机)
- 买了个指南针却不懂怎么看(怎么学会看指南针)