Python “修复错误”;“元素不可单击”;在SeleniumWebDriver中

Python “修复错误”;“元素不可单击”;在SeleniumWebDriver中,python,selenium,selenium-webdriver,selenium-chromedriver,Python,Selenium,Selenium Webdriver,Selenium Chromedriver,我需要单击DOM中的元素,但它们不会显示在浏览器页面上,除非我向下滚动到页面底部查看 有没有更好的方法让我做这件事 程序将失败,出现“消息:未知错误:元素在点上不可单击”而没有行滚动\u浏览器(驱动程序),单击前向下滚动即可 import time from selenium import webdriver def scroll_browser(driver, destination_height=None): # Get scroll height if not desti

我需要单击DOM中的元素,但它们不会显示在浏览器页面上,除非我向下滚动到页面底部查看

有没有更好的方法让我做这件事

程序将失败,出现“消息:未知错误:元素在点上不可单击”而没有行
滚动\u浏览器(驱动程序)
,单击前向下滚动即可

import time
from selenium import webdriver

def scroll_browser(driver, destination_height=None):
    # Get scroll height
    if not destination_height:
        destination_height = driver.execute_script("return document.body.scrollHeight")

    while True:
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

        new_height = driver.execute_script("return document.body.scrollHeight")
        if new_height == destination_height:
            break
        destination_height = new_height

if __name__ == '__main__':
    driver = webdriver.Chrome()
    driver.get('https://wikimediafoundation.org/wiki/Home')
    time.sleep(2)
    link = '//a[text()="Terms of Use"]'
    time.sleep(2)
    #scroll_browser(driver)
    driver.find_element_by_xpath(link).click()
    time.sleep(2)
    driver.close()

尝试使用以下代码滚动到所需元素:

if __name__ == '__main__':
    driver = webdriver.Chrome()
    driver.get('https://wikimediafoundation.org/wiki/Home')
    link = driver.find_element_by_link_text('Terms of Use')
    driver.execute_script('arguments[0].scrollIntoView();', link)
    link.click()
    driver.close()

如果您需要滚动到元素位于浏览器的中心,您可以检查此问题,当单击不在当前视口中的元素时,chromedriver 2.30中存在已知问题的可能性重复。正如WebDriver规范所述,如果元素不在当前视口中,WebDriver需要将其滚动到当前视口中,然后再单击/发送键。因此,每个浏览器的Webdriver.exe都应该为我们这样做,而不是自己添加外部代码。因此,请检查您的chromedriver版本是否为2.30。尝试升级到2.32及更高版本。可能与的重复