簡體   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