【问题标题】:Timout exeption error with my selenium script我的硒脚本超时异常错误
【发布时间】:2021-08-23 23:48:40
【问题描述】:

这是我的代码

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。但无法解决这个问题。有人请帮助我。 (请注意,我对这种脚本没有太多经验,所以请提供您的解释证明)

【问题讨论】:

    标签: python selenium selenium-webdriver automation css-selectors


    【解决方案1】:

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

    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)
    

    最好使用可见性预期条件而不是仅仅存在,因为当发现元素存在于页面上时,它通常还没有完全完成构建,尝试单击元素或发送时会花费更短的时间那个时候的文本将无法正常工作。

    【讨论】:

    • 当我这样做时仍然得到同样的错误。你明白为什么吗?
    • 尝试像以前一样使用presence_of_element_located,而不是visibility_of_element_located,如果有帮助请告诉我
    • 出现同样的超时错误?出现此错误时,能否添加网页状态截图?
    • 对不起输入了一些错误的东西现在可以工作了。
    • 感谢您的帮助。应用它很多
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 2020-10-05
    • 2011-07-30
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多