首页 > 解决方案 > 更改 AJAX 页面中的下拉值后,Python Selenium Webdriver 不刷新 html

问题描述

我正在尝试使用 Python 和 Selenium 抓取 AJAX 网页。问题是,当我更改下拉值时,页面内容会根据我的选择而更改,但 selenium 从页面返回相同的旧 html 代码。如果有人可以提供帮助,我将不胜感激。这是我的代码:

from selenium import webdriver
from selenium.webdriver.support.ui import Select
import time

url = "https://myurl.com/PATH"

driver = webdriver.Chrome()
driver.get(url)
time.sleep(5)

# change the dropdown value
sprintSelect = Select(driver.find_element_by_id("dropdown-select"))
sprintSelect.select_by_visible_text("DropDown_Value2")

html = driver.execute_script("return document.documentElement.outerHTML")
print(html)

标签: pythonseleniumwebdriver

解决方案


选择后需要等待 ajax 加载网站。尝试在选择后放置隐式或显式等待。

driver.implicitly_wait(10) # 10 seconds

或者,如果您知道所需 Web 元素的标签/ID 等,请尝试显式

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "some_ID"))

推荐阅读