繁体   English   中英

Python中的Selenium找不到按钮

[英]Selenium in Python cannot find a Button

现在,我在Python中使用Selenium时遇到问题。 这是我第一次使用它,因此,如果我做某件事非常错误,请告诉我。 无论如何,我希望下面的脚本单击网站上的按钮。 看起来并不难,但是由于某种原因,它总是给我这个错误:

selenium.common.exceptions.InvalidSelectorException was unhandled by user code
Message: Message: The given selector id('panel1-7')/x:div[1]/x:button is either invalid or does not result in a WebElement. The following error occurred:
InvalidSelectorError: Unable to locate an element with the xpath expression id('panel1-7')/x:div[1]/x:button because of the following error:
NamespaceError: An attempt was made to create or change an object in a way which is incorrect with regard to namespaces
Stacktrace:
    at FirefoxDriver.annotateInvalidSelectorError_ (file:///C:/Users/USER/AppData/Local/Temp/tmpd47h5z77/extensions/fxdriver@googlecode.com/components/driver-component.js:10744)
    at FirefoxDriver.prototype.findElementInternal_ (file:///C:/Users/USER/AppData/Local/Temp/tmpd47h5z77/extensions/fxdriver@googlecode.com/components/driver-component.js:10775)
    at FirefoxDriver.prototype.findElement (file:///C:/Users/USER/AppData/Local/Temp/tmpd47h5z77/extensions/fxdriver@googlecode.com/components/driver-component.js:10779)
    at DelayedCommand.prototype.executeInternal_/h (file:///C:/Users/USER/AppData/Local/Temp/tmpd47h5z77/extensions/fxdriver@googlecode.com/components/command-processor.js:12661)
    at DelayedCommand.prototype.executeInternal_ (file:///C:/Users/USER/AppData/Local/Temp/tmpd47h5z77/extensions/fxdriver@googlecode.com/components/command-processor.js:12666)
    at DelayedCommand.prototype.execute/< (file:///C:/Users/USER/AppData/Local/Temp/tmpd47h5z77/extensions/fxdriver@googlecode.com/components/command-processor.js:12608)

这是我正在使用的代码

##Import Modules
##
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
import unittest
import time

##Initialize and Define Variables
##
driver = webdriver.Firefox()
##Open up webpage
driver.get("http://PretendThisIsTheTargetWebsitePlease.com")
RedButtonXpath = "id('panel1-7')/x:div[1]/x:button"
BlackButtonXpath = "id('panel8-14')/x:div[1]/x:button"
GreenButtonXpath = "id('panel0-0')/x:div[1]/x:button"
RedButtonFieldElement = WebDriverWait(driver, 2).until(lambda driver: driver.find_element_by_xpath(RedButtonXpath))
BlackButtonFieldElement = WebDriverWait(driver, 2).until(lambda driver: driver.find_element_by_xpath(BlackButtonXpath))
GreenButtonFieldElement = WebDriverWait(driver, 2).until(lambda driver: driver.find_element_by_xpath(GreenButtonXpath))

##Main Loop
##
input = input("Generic answer here please! :D >>> ")

我出于隐私原因更改了我正在使用的网站,但据我所知,实际的XPath并不是问题。

(另外,请告诉我您是否以任何方式加快或提高脚本效率)。

您的XPath表达式不正确。 它们包含名称空间“ x”(我不知道为什么要在表达式中放置此“ x”)。 因此,解决方案是从XPath表达式中删除“ x”。 见下文:

RedButtonXpath = "id('panel1-7')/div[1]/button"
BlackButtonXpath = "id('panel8-14')/div[1]/button"
GreenButtonXpath = "id('panel0-0')/div[1]/button"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM