首页 > 解决方案 > 我的硒脚本出现超时异常错误

问题描述

这是我的代码

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


email= 'email'
password= "password"

driver = webdriver.Chrome(executable_path="C:\chromedriver.exe")
driver.get("https://www.quora.com/")
time.sleep(1)
enter_email = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.NAME, 'email')))
enter_email.send_keys(email)
print('email entered')
time.sleep(random.randint(1,5))
enter_password = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.NAME, 'password')))
enter_password.send_keys(password)
print('password entered')
time.sleep(random.randint(1,2))
enter_password.send_keys(Keys.RETURN)
print('logged in succesfull')
driver.get("https://www.quora.com/")
search = 'what i want to search'
search_for_question = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.NAME, 'search')))
search_for_question.send_keys(search)

当我运行它时,我得到

Traceback (most recent call last):
  File "C:\Users\EL127032\PycharmProjects\quora\main.py", line 31, in <module>
    search_for_question = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.NAME, 'search')))
  File "C:\Users\EL127032\PycharmProjects\quora\venv\lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: 

我不知道如何解决这个问题。我已经搜索了 google stack overflow 和 youtube。但无法解决这个问题。有人请帮助我。(请注意,我对这种脚本没有很多经验,所以请让你的解释假证明)

标签: pythonseleniumselenium-webdriverautomationcss-selectors

解决方案


您只是在那里使用了错误的定位器。
只需使用它,它就可以正常工作:

search_input_css_selector = 'input.q-input'

search_for_question = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, search_input_css_selector)))
search_for_question.send_keys(search)

使用可见性预期条件而不是仅仅存在也更好,因为当发现页面上存在元素时,它通常仍未完全完成构建,尝试单击元素或向其发送文本将花费更短的时间在那一刻将无法正常工作。


推荐阅读