📅  最后修改于: 2023-12-03 15:41:58.854000             🧑  作者: Mango
在使用 Selenium 和 Python 进行 Web 自动化测试时,查找元素是一个非常重要的任务。通常可以使用元素的 ID、class、tag name 等属性来查找元素,但有时这些信息并不足以定位元素。
这时可以通过 js 路径来查找元素。js 路径是通过 JavaScript 代码来获取元素的 XPath 表达式,可以解决一些难以通过常规方式查找的元素。
在开始之前,需要先安装 Selenium 和 Chrome Driver。可以使用 pip 命令来安装 Selenium:
pip install selenium
Chrome Driver 可以从官网下载:https://sites.google.com/a/chromium.org/chromedriver/downloads
下载完成后,需要将 Chrome Driver 路径添加到系统环境变量中。
安装完成后,需要在 Python 中导入 Selenium 和打开需要测试的网页。这里以百度首页为例:
from selenium import webdriver
driver = webdriver.Chrome() # 打开 Chrome 浏览器
driver.get('https://www.baidu.com/') # 打开百度首页
使用 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 查找元素的方法,希望对大家有所帮助。