📜  python selenium 按文本查找元素 - Python (1)

📅  最后修改于: 2023-12-03 14:46:03.820000             🧑  作者: Mango

Python Selenium 按文本查找元素

在使用 Selenium 进行 Web 自动化测试时,常常需要按照文本内容查找页面元素。本文将介绍如何使用 Python Selenium 按文本查找元素。

1. 通过 XPath 查找元素

XPath 是一种在 XML 和 HTML 文档中查找信息的语言。Selenium 支持使用 XPath 查找页面元素。通过 XPath 语法,我们可以按照元素的文本内容查找元素。

首先,打开待测试的页面:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.example.com")

然后,使用 XPath 查找元素:

elements = driver.find_elements_by_xpath("//*[contains(text(), '文本内容')]")

find_elements_by_xpath 方法返回的是一个列表,包含了按照 XPath 查找到的所有元素。"//*[contains(text(), '文本内容')]" 表示查找所有文本内容中包含 "文本内容" 的元素。

2. 通过 CSS 选择器查找元素

CSS 选择器是一种可以选择 HTML 元素的语法。Selenium 也支持使用 CSS 选择器查找页面元素。与 XPath 类似,我们也可以通过 CSS 选择器按照元素的文本内容查找元素。

同样先打开待测试的页面:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.example.com")

然后,使用 CSS 选择器查找元素:

elements = driver.find_elements_by_css_selector(":contains('文本内容')")

同样返回的是一个列表,包含了按照 CSS 选择器查找到的所有元素。:contains('文本内容') 表示查找所有文本内容中包含 "文本内容" 的元素。

3. 组合使用 XPath 和 CSS 选择器

在有些情况下,我们需要组合使用 XPath 和 CSS 选择器来查找元素。例如,需要按照某一父级元素下的文本内容查找元素。此时,可以先通过 XPath 查找到父级元素,然后再通过 CSS 选择器查找子元素。

# 查找 class 属性为 "parent" 的元素
parent_element = driver.find_element_by_xpath("//div[@class='parent']")

# 在父级元素下查找文本内容为 "文本内容" 的子元素
elements = parent_element.find_elements_by_css_selector(":contains('文本内容')")
4. 按照正则表达式匹配文本内容

在有些情况下,我们需要按照正则表达式匹配文本内容来查找元素。此时,可以通过 Python 的 re 模块来解决。

import re

# 使用正则表达式查找所有以 "文本内容" 开头的元素
pattern = re.compile("^文本内容")
elements = driver.find_elements_by_xpath("//*[re:test(text(), '{}')]".format(pattern.pattern))
5. 总结

本文介绍了如何使用 Python Selenium 按照文本内容查找页面元素,包括使用 XPath、CSS 选择器和正则表达式匹配。在实际编写自动化测试时,应根据实际情况选择合适的方式来查找页面元素。