【发布时间】:2026-01-13 08:45:01
【问题描述】:
我知道有人问过这个问题,但我需要解决这个错误:
Traceback (most recent call last):
File "goeventz_automation.py", line 405, in <module>
if login(driver) is not None:
File "goeventz_automation.py", line 149, in login
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@track-element='header-login']"))).click()
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/support/wait.py", line 80, in until
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:
这是出现错误的代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import TimeoutException
import urllib.request as request
import urllib.error as error
from PIL import Image
from selenium.webdriver.chrome.options import Options
import datetime as dt
import time
from common_file import *
from login_credentials import *
def login(driver):
global _email, _password
if waiter(driver, "//a[@track-element='header-login']") is not None:
#login = driver.find_element_by_xpath("//a[@track-element='header-login']")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@track-element='header-login']"))).click()
#login.click()
if waiter(driver,"//input[@id='user_email']") is not None:
email = driver.find_element_by_xpath("//input[@id='user_email']")
password = driver.find_element_by_xpath("//input[@id='password']")
email.send_keys(_email)
password.send_keys(_password)
driver.find_element_by_xpath("//button[@track-element='click-for-login']").click()
return driver
else:
print("There was an error in selecting the email input field. It may be the page has not loaded properly.")
return None
else:
print("There was an error in selecting the header-login attribute on the page.")
return None
if __name__ == '__main__':
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('/usr/bin/chromium/chromedriver',chrome_options=chrome_options)
#d.get('https://www.google.nl/')
#driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.goeventz.com/')
if login(driver) is not None:
print(create_event(driver))
我认为Keys.ENTER 有一些问题,但我不知道如何解决。我已经尝试了所有可能的解决方案......
【问题讨论】:
-
我认为包含名为“waiter”的函数的代码是明智的,因为它与您编辑要显示的问题的错误有关。很高兴看到您所做的所有相关导入,这样我们就可以正确排除任何线索或导致您的问题的原因。
-
确保您的 DOM 中没有任何 iframe,还有一个名为
isEnabled的方法使用该方法并确保该元素已启用,然后尝试单击它。
标签: python-3.x selenium selenium-webdriver webdriver webdriverwait