我尝试让Selenium导入元掩码。但是,当我使用XPath表达式/html/body/div[1]/div/div[3]/div/div/div/button
时,控制台返回:
selenium.common.exceptions.NoSuchElementException:消息:没有此元素:找不到元素:{“方法”:“xpath”,“选择器”:“/html/body/div 1/div/div[3]/div/div/div/按钮”}(会话信息:铬=93.0.4577.82)
奇怪的是,当我在Chrome DevTools中使用$x("/html/body/div[1]/div/div[3]/div/div/div/button")
时,它能够识别"开始“按钮。我如何修复此错误,为什么会出现上述错误?
完整的源代码:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
options = Options()
options.add_extension('metamask-chrome-9.8.4.crx')
driver = webdriver.Chrome('./chromedriver', options = options)
driver.get('https://google.com')
time.sleep(2)
get_started_button = driver.find_element_by_xpath("/html/body/div[1]/div/div[3]/div/div/div/button")
get_started_button.click()
input('Press [ENTER] to close browsers...')
driver.quit()
完整错误日志:
Traceback (most recent call last):
File "D:\Rias\metamask selenium\script.py", line 13, in <module>
get_started_button = driver.find_element_by_xpath("/html/body/div[1]/div/div[3]/div/div/div/button")
File "C:\Users\User\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 394, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "C:\Users\User\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 976, in find_element
return self.execute(Command.FIND_ELEMENT, {
File "C:\Users\User\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Users\User\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div[1]/div/div[3]/div/div/div/button"}
(Session info: chrome=93.0.4577.82)
2条答案
按热度按时间ebdffaop1#
在Selenium中单击有四种方法。
我将使用以下XPath表达式:
代码试验1:
代码试验2:
代码试验3:
代码试验4:
进口:
**PS:**请检查开发工具中是否有HTML DOM中的唯一条目。
检查步骤:
在Chrome中按下F12 →转到元素部分→执行Ctrl + F →然后粘贴XPath表达式并查看,如果您想要的元素被突出显示。
hjzp0vay2#
当您将元掩码扩展加载到Selenium驱动程序(Chrome)时,会出现一个重定向到元掩码页面的情况,您可以通过打开的Chrome窗口看到该页面。
但是Selenium找不到按钮,因为它仍然将第一个选项卡视为活动选项卡,所以它在错误的位置和错误的选项卡中查找按钮。
您必须将Selenium中的active标签更改为metamask标签。请参见以下代码片段:
我只加了这一行:
切换到扩展页面,并将通过XPath选择按钮更改为通过 class_name。
我觉得很好。