erhöhen TimeoutException(Nachricht, Bildschirm, stacktrace) TimeoutException: Nachricht:
im neu in python und Selen im Allgemeinen, und ich war versucht, ein Beispiel, das ich sah in youtube. dies ist der code-Beispiel:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
import unittest
class LoginTest(unittest.TestCase):
def test_Login(self):
self.driver = webdriver.Firefox()
self.driver.get("https://www.facebook.com/")
driver = self.driver
facebookUsername = "xxxxxxxx"
facebookPassword = "xxxxxxxx"
emailFieldId="email"
passFieldId ="pass"
loginButtonXpath="//input[@value='Log in']"
fbLogoXpath = "(//a[contains(@href,'logo')])[1]"
emailFieldElement = WebDriverWait(driver, 1).until(lambda driver: driver.find_element_by_id(emailFieldId))
passFieldElement = WebDriverWait(driver, 1).until(lambda driver: driver.find_element_by_id(passFieldId))
loginButtonElement = WebDriverWait(driver, 1).until(lambda driver: driver.find_element_by_id(loginButtonXpath))
emailFieldElement.clear()
emailFieldElement.send_keys(facebookUsername)
passFieldElement.clear()
passFieldElement.send_keys(facebookPassword)
loginButtonElement.click()
WebDriverWait(driver, 1).until(lambda driver: driver.find_element_by_id(fbLogoXpath))
def tearDown(self):
self.driver.quit()
if __name__ == "__main__":
unittest.main()
wenn ich den code eingibt, um facebook, sondern hält an und gibt mir diese Fehlermeldung.
ERROR: test_Login (__main__.LoginTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "facebot.py", line 25, in test_Login
loginButtonElement = WebDriverWait(driver, 1).until(lambda driver: driver.find_element_by_id(loginButtonXpath))
File "C:\Python27\lib\site-packages\selenium\webdriver\support\wait.py", line 76, in until
raise TimeoutException(message, screen, stacktrace)
TimeoutException: Message:
Stacktrace:
at FirefoxDriver.prototype.findElementInternal_ (file:///c:/users/ale/appdata/local/temp/tmpmle1b1/extensions/fxdriv
er@googlecode.com/components/driver-component.js:10667)
at FirefoxDriver.prototype.findElement (file:///c:/users/ale/appdata/local/temp/tmpmle1b1/extensions/fxdriver@google
code.com/components/driver-component.js:10676)
at DelayedCommand.prototype.executeInternal_/h (file:///c:/users/ale/appdata/local/temp/tmpmle1b1/extensions/fxdrive
r@googlecode.com/components/command-processor.js:12643)
at DelayedCommand.prototype.executeInternal_ (file:///c:/users/ale/appdata/local/temp/tmpmle1b1/extensions/fxdriver@
googlecode.com/components/command-processor.js:12648)
at DelayedCommand.prototype.execute/< (file:///c:/users/ale/appdata/local/temp/tmpmle1b1/extensions/fxdriver@googlec
ode.com/components/command-processor.js:12590)
----------------------------------------------------------------------
Ran 1 test in 16.262s
ich habe versucht Festsetzung es durch die Suche auf youtube, aber im stecken und nicht wissen, was es sein könnte.
- Es sieht aus wie es eine Zeitüberschreitung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für den Anfang, den timeout-Wert zu niedrig ist, erhöhen Sie ihn. Plus, können Sie definieren die
WebDriverWait
Instanz nur einmal, und wiederverwenden:Beachten Sie auch, dass Sie verwenden sollten
find_element_by_xpath()
stattfind_element_by_id()
bei der Suche nach den "Anmelden" - button.find_element_by_id()
. Es gibt kein element mit id="//input[@value='Login']" auf der Seite.