即使满足预期条件,Selenium WebDriverWait try/finally 语句也会失败

问题描述 投票:0回答:1

我正在关注 Selenium 网站上的文档,了解如何在继续之前等待 Ajax 响应,虽然找到了正确的动态加载信息,但仍然会抛出超时错误。

我的代码应该做的是加载一个网站,等待特定类的动态填充元素出现,并获取类的属性。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup

driver = webdriver.Edge(executable_path=r'path\to\MicrosoftWebDriver.exe')
driver.get('https://website')

result="placeholder"

try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "class name"))
    )
finally:
    html_input = driver.page_source
    soup = BeautifulSoup(html_input, features="html.parser")
    for each_item in soup.findAll(class_='class name'):
        result = each_item['href']
        print(result)
    driver.quit()

我的输出是

*The output I was looking for*

Traceback (most recent call last):
  File "code.py", line 47, in <module>
    element = WebDriverWait(driver, 10).until(
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\username\anaconda3\envs\CondaEnv\Lib\site-packages\selenium\webdriver\support\wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: 

打印语句正在执行,但我仍然收到超时错误。我不知道如何继续而不将我想要的所有其他代码放入

finally
部分。

python selenium-webdriver beautifulsoup
1个回答
0
投票

这是一个超时异常,这意味着找不到您使用类名引用的元素。

© www.soinside.com 2019 - 2024. All rights reserved.