python - 我的硒脚本出现超时异常错误
问题描述
这是我的代码
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。但无法解决这个问题。有人请帮助我。(请注意,我对这种脚本没有很多经验,所以请让你的解释假证明)
解决方案
您只是在那里使用了错误的定位器。
只需使用它,它就可以正常工作:
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)
使用可见性预期条件而不是仅仅存在也更好,因为当发现页面上存在元素时,它通常仍未完全完成构建,尝试单击元素或向其发送文本将花费更短的时间在那一刻将无法正常工作。
推荐阅读
- xml - XSLT 1.0 分组数据集,包括不同元素和 0 个或多个重复元素
- python - 如何正确输出包含“#”的 YAML 文件的字符串?
- python - 如何使用 pyqt5 从 __init__() 函数外部更新字段
- javascript - 在悬停时为多行和多列中的元素显示表格
- tensorflow - as_list() 未在 y_t_rank = len(y_t.shape.as_list()) 上的未知 TensorShape 上定义,并且与指标相关
- angular - 无法在递归角度表单上使用 ngIf 找到带有路径的控件
- javascript - 我在哪里可以找到 Tailwind 组件中的 JS 代码?
- count - 使用 SAS 计算在给定日期之前需要随访的受试者数量
- sqlalchemy - 将 SQLAlchemy ORM 对象与磁盘上的外部文件同步
- python - 所有请求中的 Python Tornado max_buffer_size