📅  最后修改于: 2023-12-03 15:28:26.421000             🧑  作者: Mango
在 Web 自动化测试中,查找页面元素是一个常见的任务。通常我们使用元素的 ID、class、xpath 等方式去定位元素。但有些情况下元素并没有明显的定位属性,这时我们可以通过文本内容来查找元素。
我们可以使用 text() 函数来查找元素。以下是一个例子:
# 引入 WebDriver
from selenium import webdriver
# 创建浏览器对象
browser = webdriver.Chrome()
# 打开网页
browser.get('https://www.example.com/')
# 使用 text() 函数查找元素
elem = browser.find_element_by_xpath("//button[text()='Click me']")
# 点击元素
elem.click()
# 关闭浏览器
browser.quit()
在这个例子中,我们使用 find_element_by_xpath("//button[text()='Click me']")
查找包含“Click me”的按钮元素。其中 text()
函数返回元素的文本内容。
还有一种情况,就是文本内容的确切字符串可能不知道,但我们知道其部分字符串。这时我们可以使用 contains() 函数来查找元素。以下是一个例子:
# 引入 WebDriver
from selenium import webdriver
# 创建浏览器对象
browser = webdriver.Chrome()
# 打开网页
browser.get('https://www.example.com/')
# 使用 contains() 函数查找元素
elem = browser.find_element_by_xpath("//button[contains(text(), 'Click')]")
# 点击元素
elem.click()
# 关闭浏览器
browser.quit()
在这个例子中,我们使用 find_element_by_xpath("//button[contains(text(), 'Click')]")
查找包含“Click”的按钮元素。其中 contains()
函数返回包含指定字符串的元素。
当我们要匹配更为复杂的文本内容时,可以使用正则表达式。以下是一个例子:
# 引入 re 模块
import re
# 引入 WebDriver
from selenium import webdriver
# 创建浏览器对象
browser = webdriver.Chrome()
# 打开网页
browser.get('https://www.example.com/')
# 定义正则表达式
pattern = re.compile(r'^Click [\w\d]+ me$')
# 查找元素
elems = browser.find_elements_by_xpath("//button")
# 遍历元素列表
for elem in elems:
# 匹配正则表达式
if pattern.match(elem.text):
# 点击元素
elem.click()
break
# 关闭浏览器
browser.quit()
在这个例子中,我们使用正则表达式 r'^Click [\w\d]+ me$'
匹配所有文本内容为“Click”接一个或多个字母或数字,再加上“me”的按钮元素。其中 ^
和 $
分别表示字符串的开头和结尾,\w
匹配字母或数字,\d
匹配数字,+
表示多个匹配。
以上就是通过文本查找 Web 元素的方法。通过结合这些方法,我们能够更加灵活地定位页面元素。