исключение тайм-аута времени ожидания python для селена, когда раньше он работал - PullRequest
0 голосов
/ 20 октября 2018

У меня есть код, который должен войти в 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:

Я пытался использовать сон, но затем я получаю сообщение об ошибке, что элемент не виден.

Я пробовал XPATH и пробовал EC как element to be visible, чтобы вызвать только то же сообщение об ошибке, как показано ниже.

1 Ответ

0 голосов
/ 20 октября 2018

Кажется, что нужные локаторы изменились, и вы можете использовать следующее решение:

  • Кодовый блок:

    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")
    
  • Снимок браузера:

signIn

...