【问题标题】:Fix error "Element is not clickable" in Selenium webdriver修复 Selenium webdriver 中的错误“元素不可点击”
【发布时间】:2018-04-02 02:06:11
【问题描述】:

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

我有更好的方法吗?

如果没有scroll_browser(driver) 行,程序将失败并显示“消息:未知错误:元素不可点击”,并且在点击之前向下滚动就可以了。

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()

【问题讨论】:

标签: python selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

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

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()

【讨论】:

    猜你喜欢
    • 2016-05-23
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 2016-08-12
    • 2018-02-19
    • 2012-08-15
    • 2012-09-03
    • 2012-03-26
    相关资源
    最近更新 更多