通过属性模糊匹配通过属性值的部分内容进行匹配 。
语法:
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()
CSS_SELECTOR通过CSS选择器语法定位元素 。
适用于Selenium和Appium,但是需要注意的是,原生的app控件不支持CSS_SELECTOR,只支持Xpath 。
Selenium框架官方推荐使用CSS定位,因为CSS定位效率高于XPATH 。
CSS是一种标记语言,控制元素的显示样式,就必须找到元素,在CSS标记语言中找元素使用CSS选择器 。
CSS的选择策略也多很多种,但是无论选择哪一种选择策略都是用同一种定位方法 。
定位方法:
driver.find_element(By.CSS_SELECTOR, "CSS选择策略")
绝对路径以html开始,使用 > 或 空格 分隔,与XPATH一样,CSS_SELECTOR的下标也是从1开始 。
driver.find_element(By.CSS_SELECTOR, "html>body>div>div>div>div>form>input:nth-child(1)").send_keys("测试蔡坨坨") # 使用>分隔driver.find_element(By.CSS_SELECTOR, "html body div div div div form input:nth-child(1)").send_keys("测试蔡坨坨") # 使用空格分隔driver.find_element(By.CSS_SELECTOR, "html>body>div>div div div form input:nth-child(1)").send_keys("测试蔡坨坨")# 使用 空格 + > 分隔
相对路径不以html开头,以CSS选择器开头,比如标id选择器、class选择器等 。
举栗:
driver.find_element(By.CSS_SELECTOR, "input.but1").send_keys("测试蔡坨坨")
id选择器语法:# 开头表示id选择器
driver.find_element(By.CSS_SELECTOR, "标签#id属性值")
经验总结扩展阅读
- 三 Selenium+Python系列 - 常见浏览器操作
- 二 Selenium+Python系列 - 元素定位那些事
- 厨房小蟑螂怎么彻底消灭
- 怎么快速学会河南话
- 恋爱不懂及时止损,会被伤得彻底的星座
- 感情中慢慢才学会信任对方的星座
- 为爱不择手段而彻底失去爱情的星座
- selenium4-定位单个页面元素
- 感情里学会经营和思考的星座女
- 家里有蛾蠓怎么彻底清除