我正在关注 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
部分。
这是一个超时异常,这意味着找不到您使用类名引用的元素。