0
我需要點擊DOM中的元素,但它們不會顯示在瀏覽器頁面上,除非我向下滾動到頁面底部以查看它。在Selenium webdriver中修復錯誤「元素不可點擊」
有沒有更好的方法來做到這一點?
該程序將失敗,並顯示「消息:未知錯誤:元素不可點擊的點」,沒有行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()
如果您需要滾動到元素在瀏覽器的中心,您可以檢查這個問題https://stackoverflow.com/questions/ 20167544/selenium-scroll-element-into-center-of-view – jadupl
[使用webdriver滾動到元素?]的可能重複(https://stackoverflow.com/questions/41744368/scrolling-to-element-using-webdriver) – Mangohero1
單擊不在當前視口中的元素時,在chromedriver 2.30中存在已知問題。正如WebDriver規範所說的,如果元素不在當前視口中,則webdriver需要在點擊/ sendkeys之前將其滾動到當前視口中。所以每個瀏覽器的Webdriver.exe都應該爲我們做,而不是由我們自己添加外部代碼。所以檢查你的chromedriver版本是否爲2.30。嘗試升級到2.32及更高版本。 – yong