📜  通过文本查找 Web 元素 (1)

📅  最后修改于: 2023-12-03 15:28:26.421000             🧑  作者: Mango

通过文本查找 Web 元素

在 Web 自动化测试中,查找页面元素是一个常见的任务。通常我们使用元素的 ID、class、xpath 等方式去定位元素。但有些情况下元素并没有明显的定位属性,这时我们可以通过文本内容来查找元素。

1. 使用 text() 函数查找元素

我们可以使用 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() 函数返回元素的文本内容。

2. 使用 contains() 函数查找元素

还有一种情况,就是文本内容的确切字符串可能不知道,但我们知道其部分字符串。这时我们可以使用 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() 函数返回包含指定字符串的元素。

3. 结合正则表达式查找元素

当我们要匹配更为复杂的文本内容时,可以使用正则表达式。以下是一个例子:

# 引入 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 元素的方法。通过结合这些方法,我们能够更加灵活地定位页面元素。