0

Ich muss auf Elemente klicken, die im DOM sind, aber sie werden nicht auf der Browserseite angezeigt, es sei denn ich scrolle bis zum Ende der Seite, um es zu sehen.Fehler beheben "Element ist nicht anklickbar" in Selenium webdriver

Gibt es einen besseren Weg für mich, es zu tun?

Das Programm wird mit "Nachricht: unbekannter Fehler: Element ist nicht anklickbar" ohne Zeile scroll_browser(driver) und es ist in Ordnung, wenn wir vor dem Klicken nach unten scrollen.

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

Wenn Sie in der Mitte des Browser-Element sein blättern können Sie diese Frage prüfen https://stackoverflow.com/questions/ 20167544/selen-scroll-element-in-center-of-view – jadupl

+0

Mögliches Duplikat von [Scrolling to Element mittels Webdriver?] (Https://stackoverflow.com/questions/41744368/scrolling-to-element-using-webdriver) – Mangohero1

+1

Es gibt ein bekanntes Problem in Chromedriver 2.30, wenn Sie auf ein Element klicken, das sich nicht im aktuellen Ansichtsfenster befindet. Laut der WebDriver-Spezifikation muss der Web-Treiber, wenn sich das Element nicht im aktuellen Ansichtsfenster befindet, in das aktuelle Ansichtsfenster scrollen, bevor Sie darauf klicken. Also sollte Webdriver.exe von jedem Browser das für uns tun, anstatt externen Code von uns selbst hinzuzufügen. Überprüfe also, ob deine verchromte Version 2.30 ist oder nicht. Versuchen Sie, auf 2.32 und höher zu aktualisieren. – yong

Antwort

1

Versuchen Sie, erforderliches Element mit Code unten blättern:

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