selenium python wait time 以前工作时超时异常

selenium python wait time time out exception when it used to work before

我有代码应该在一定时间后登录到 etsy。此代码没有任何更改,并且过去在我拥有的旧机器上可以完美运行。但是现在,当我 运行 在另一台 windows 10 机器上执行此操作时,出现超时异常。

代码:

import selenium
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.ui import Select
from datetime import datetime
import time
from time import sleep
from selenium.webdriver.common.action_chains import ActionChains

browser = webdriver.Chrome()
browser.get("https://www.etsy.com/shop/FidoandFifi?ref=l2-shopheader-name") #navigates to hoshiikins.com
print("Navigating to website...")
browser.find_element_by_id("sign-in").click()
wait = WebDriverWait(browser, 10)
wait.until(EC.element_to_be_clickable((By.ID,"username-existing")))
username = browser.find_element_by_id("username-existing")
password = browser.find_element_by_id("password-existing")
username.click()
username = browser.find_element_by_id("username-existing")

它到达 wait.until 行然后超时并显示此消息:

> Navigating to website...
Traceback (most recent call last):
  File "EstyBot.py", line 183, in <module>
    main()
  File "EstyBot.py", line 180, in main
    get_item(item)
  File "EstyBot.py", line 61, in get_item
    wait.until(EC.element_to_be_clickable((By.ID,"username-existing")))
  File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message:

我试过使用 sleep,但是我得到了元素不可见的错误。

我已经尝试过 XPATH 和 EC as element to be visible 只遇到如下相同的错误消息。

似乎所需的定位器已更改,您可以使用以下解决方案:

  • 代码块:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    options.add_argument('disable-infobars')
    browser = webdriver.Chrome(chrome_options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
    browser.get("https://www.etsy.com/shop/FidoandFifi?ref=l2-shopheader-name") #navigates to hoshiikins.com
    print("Navigating to website...")
    WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#sign-in"))).click()
    WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input.input.input-large#join_neu_email_field"))).send_keys("Taryn@Antoinette.Raines")
    browser.find_element_by_css_selector("input.input.input-large#join_neu_password_field").send_keys("Taryn_Antoinette_Raines")
    
  • 浏览器快照: