首页 > 解决方案 > python selenium present_of_element_located 超时

问题描述

selenium 在一页中显示两个元素,我可以找到一个,但另一个出现错误。

网址:base_url

代码:

element1 = wait.until(EC.presence_of_element_located((By.ID, 'soudiv')))
print('element1:', element1)
element2 = wait.until(EC.presence_of_element_located((By.ID, 'cresult')))
print(element2)

控制台输出:

element1: <selenium.webdriver.remote.webelement.WebElement (session="562daf934cfc22c3a31b17759d9a7502", element="0.8160783993595944-2")>
Traceback (most recent call last):
File "/Users/msxf/Documents/pythonProject/autohome/spider.py", line 56, in <module> start()
File "/Users/msxf/Documents/pythonProject/autohome/spider.py", line 44, in start
element2 = wait.until(EC.presence_of_element_located((By.ID, 'cresult')))
File "/anaconda3/lib/python3.6/site- packages/selenium/webdriver/support/wait.py", line 80, in until
raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: 

html: html

标签: pythonseleniumselenium-webdriver

解决方案


我试了一下,效果很好,这是我的Waits

...
from selenium.webdriver.support.ui import WebDriverWait

...

soudiv = WebDriverWait(driver, 5).until(
                           EC.presence_of_element_located((By.ID, 'soudiv')))
print(soudiv)
cresult = WebDriverWait(driver, 5).until(
                           EC.presence_of_element_located((By.ID, 'cresult')))
print(cresult)

输出

<selenium.webdriver.remote.webelement.WebElement (session="d9cf0d2b2875a6a939cc2de50421f1d1", element="0.4909859897090536-1")>
<selenium.webdriver.remote.webelement.WebElement (session="d9cf0d2b2875a6a939cc2de50421f1d1", element="0.4909859897090536-2")>

推荐阅读