📅  最后修改于: 2023-12-03 14:46:03.820000             🧑  作者: Mango
在使用 Selenium 进行 Web 自动化测试时,常常需要按照文本内容查找页面元素。本文将介绍如何使用 Python Selenium 按文本查找元素。
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(), '文本内容')]"
表示查找所有文本内容中包含 "文本内容"
的元素。
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('文本内容')
表示查找所有文本内容中包含 "文本内容"
的元素。
在有些情况下,我们需要组合使用 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('文本内容')")
在有些情况下,我们需要按照正则表达式匹配文本内容来查找元素。此时,可以通过 Python 的 re
模块来解决。
import re
# 使用正则表达式查找所有以 "文本内容" 开头的元素
pattern = re.compile("^文本内容")
elements = driver.find_elements_by_xpath("//*[re:test(text(), '{}')]".format(pattern.pattern))
本文介绍了如何使用 Python Selenium 按照文本内容查找页面元素,包括使用 XPath、CSS 选择器和正则表达式匹配。在实际编写自动化测试时,应根据实际情况选择合适的方式来查找页面元素。