如何使用Python实现网页内嵌小窗口向下滚动,解决ElementNotInteractableException报错
问题原因
ElementNotInteractableException 报错的核心原因是你定位的div容器本身不支持直接接收键盘输入事件,所以调用send_keys()方法时触发异常。
解决方案
优先推荐使用JavaScript执行滚动,兼容性最强,不需要元素支持交互:
- 首先确认定位到的是实际的滚动容器(可在浏览器控制台检查该元素的
overflow属性为auto或scroll) - 执行滚动操作的代码示例:
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 先加显式等待,确保元素加载完成 wait = WebDriverWait(browser, 10) scroll_container = wait.until(EC.presence_of_element_located((By.XPATH, '/html/body/div[4]/div/div/div[2]'))) # 滚动到容器底部 browser.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight", scroll_container) # 如果需要向下滚动指定像素(比如100px),替换为以下代码 # browser.execute_script("arguments[0].scrollTop += 100", scroll_container)
如果确实需要用键盘事件实现,先给元素赋予焦点再操作:
html = browser.find_element_by_xpath('/html/body/div[4]/div/div/div[2]') # 先点击容器获取焦点 html.click() html.send_keys(Keys.END)
该方案仅适用于可点击的滚动容器,兼容性弱于JS方案。
内容的提问来源于stack exchange,提问作者Omkar Nath
相关产品推荐
相关产品推荐

