📜  通过 js 路径 selenium python 查找元素 - Javascript (1)

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

通过 js 路径 selenium python 查找元素

在使用 Selenium 和 Python 进行 Web 自动化测试时,查找元素是一个非常重要的任务。通常可以使用元素的 ID、class、tag name 等属性来查找元素,但有时这些信息并不足以定位元素。

这时可以通过 js 路径来查找元素。js 路径是通过 JavaScript 代码来获取元素的 XPath 表达式,可以解决一些难以通过常规方式查找的元素。

安装 Selenium 和 Chrome Driver

在开始之前,需要先安装 Selenium 和 Chrome Driver。可以使用 pip 命令来安装 Selenium:

pip install selenium

Chrome Driver 可以从官网下载:https://sites.google.com/a/chromium.org/chromedriver/downloads

下载完成后,需要将 Chrome Driver 路径添加到系统环境变量中。

导入 Selenium 和打开网页

安装完成后,需要在 Python 中导入 Selenium 和打开需要测试的网页。这里以百度首页为例:

from selenium import webdriver

driver = webdriver.Chrome()  # 打开 Chrome 浏览器
driver.get('https://www.baidu.com/')  # 打开百度首页
使用 js 路径查找元素

使用 js 路径可以先在 Chrome 浏览器中打开需要测试的网页,在元素上右键点击 "检查",在 Elements 面板中选中需要查找的元素,然后在 Console 面板中输入 $x('xpath path'),即可获取该元素的 XPath 表达式。

然后在 Python 中使用 execute_script 方法执行该代码,即可获取该元素。

element_xpath = "xpath path"  # 替换成需要查找的元素的 XPath 表达式
element = driver.execute_script(f"return document.evaluate('{element_xpath}', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue")

其中,document.evaluate 方法用于执行 XPath 查询,第一个参数是 XPath 表达式,第二个参数是要搜索的文档区域,第三个参数是命名空间,这里我们置为 null,第四个参数表示要搜索的节点类型,这里我们设置为 XPathResult.FIRST_ORDERED_NODE_TYPE 获取第一个匹配的节点,最后一个参数是是否忽略命名空间,这里我们设置为 null。

完整代码
from selenium import webdriver

driver = webdriver.Chrome()  # 打开 Chrome 浏览器
driver.get('https://www.baidu.com/')  # 打开百度首页

# 使用 js 路径查找元素
element_xpath = "xpath path"  # 替换成需要查找的元素的 XPath 表达式
element = driver.execute_script(f"return document.evaluate('{element_xpath}', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue")

# 操作元素
element.click()  # 点击该元素

# 关闭浏览器
driver.quit()

以上就是通过 js 路径 Selenium Python 查找元素的方法,希望对大家有所帮助。