如何使用Selenium WebDriver在弹出窗口内进行滚动?
弹窗内滚动的解决方法

你当前用driver.execute_script("window.scrollTo(0, 2080)")会滚动整个页面,是因为这个方法操作的是全局window对象,而弹窗的滚动区域是独立的DOM元素,需要针对性操作:
方法一:定位滚动容器后执行脚本
先找到弹窗里的可滚动元素(通常是带有overflow: auto或overflow: scroll样式的容器),再对它执行滚动:
# 以class定位为例,实际要替换成你弹窗的元素定位方式 scrollable_container = driver.find_element(By.CLASS_NAME, "modal-scrollable") # 方式1:设置scrollTop到指定位置 driver.execute_script("arguments[0].scrollTop = 2080;", scrollable_container) # 方式2:用scrollTo方法 driver.execute_script("arguments[0].scrollTo(0, 2080);", scrollable_container)
方法二:用ActionChains模拟键盘滚动
如果不确定滚动容器,也可以先定位弹窗内的任意元素,然后模拟PageDown/PageUp滚动:
from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.keys import Keys # 定位弹窗内的元素,确保焦点在弹窗内 modal_element = driver.find_element(By.XPATH, "//div[@class='modal']") ActionChains(driver)\ .move_to_element(modal_element)\ .send_keys(Keys.PAGE_DOWN)\ .perform()
内容的提问来源于stack exchange,提问作者Павел
相关产品推荐
相关产品推荐

