478 Stimmen

Fehlersuche bei "Element ist an Punkt nicht klickbar"

Ich sehe dies nur in Chrome.

Die vollständige Fehlermeldung lautet:

"org.openqa.selenium.WebDriverException: Element ist an Punkt (411, 675) nicht anklickbar. Ein anderes Element würde den Klick erhalten: ..."

Das Element, das "angeklickt" werden würde, befindet sich neben dem fraglichen Element, nicht darüber und nicht überlappend, und es bewegt sich nicht auf der Seite.

Ich habe versucht, einen Versatz hinzuzufügen, aber auch das funktioniert nicht. Das Element befindet sich im angezeigten Fenster, ohne dass ein Bildlauf erforderlich ist.

3voto

Steve Saporta Punkte 4002

Re Tony Lâmpada's Antwort, Kommentar # 27 hat in der Tat das Problem für mich gelöst, außer, dass es Java-Code zur Verfügung gestellt und ich brauchte Python. Hier ist eine Python-Funktion, die zur Position des Elements scrollt und es dann anklickt.

def scroll_to_and_click(xpath):
    element = TestUtil.driver.find_element_by_xpath(xpath)
    TestUtil.driver.execute_script('window.scrollTo(0, ' + str(element.location['y']) + ');')
    element.click()

Dies löste das Problem für mich in Chrome 34.0. In Firefox 28.0 und IE 11 hat es keinen Schaden angerichtet. Diese Browser sind von dem Problem nicht betroffen, aber das Scrollen zur Position des Elements vor dem Anklicken ist trotzdem keine schlechte Sache.

3voto

alpheus Punkte 309

Offenbar ist dies das Ergebnis eines "Won't Fix"-Fehlers in der Chrome-Treiber-Binärdatei.

Eine Lösung, die bei mir funktioniert hat (Our Mileage May Vary), finden Sie in dieser Google-Gruppendiskussion, Kommentar Nr. 3:

https://groups.google.com/forum/?fromgroups=#!thema/selenium-entwickler-aktivität/DsZ5wFN52tc

Der relevante Teil steht genau hier:

Ich habe das Problem inzwischen umgangen, indem ich direkt zu der href von der übergeordneten Anker der Spanne.

driver.Navigate().GoToUrl(driver.FindElement(By.Id(embeddedSpanIdToClick)).FindElement(By.XPath("..")).GetAttribute("href"));

In meinem Fall verwende ich Python, und sobald ich das gewünschte Element gefunden habe, habe ich einfach

driver.get(ViewElm.get_attribute('href'))

Ich würde erwarten, dass dies nur funktioniert, wenn das Element, auf das Sie klicken wollen, ein Link ist...

2voto

Sanyam Gupta Punkte 210

Ich hing auch zwei Tage lang aus demselben Grund fest. Durch Scrollen wird es funktionieren, weil die Daten vielleicht nicht richtig geladen werden konnten, was immer wieder denselben Fehler verursacht.

Was ich gemacht habe, ist, dass ich willkürlich nach unten gescrollt habe, einmal mit (0,-500), dann (0,400), dann (0.-600), Sie können diese Scroll-Werte entsprechend Ihrer Verwendung angeben. Scrollen Sie einfach dorthin, wo Sie den Inhalt zum Anklicken haben.

driver.execute_script("scrollBy(0,-500);")
sleep(5)

driver.execute_script("scrollBy(0,400);")
sleep(5)

driver.execute_script("scrollBy(0,-600);")
sleep(5)

Es hat wirklich funktioniert :)

2voto

Dan Kohn Punkte 32574

Ich hatte diesen Fehler, weil ich einen Hover getestet habe und dann auf den Link unter dem Tooltip klicken musste. Die Lösung war, Folgendes hinzuzufügen page.find('.sp-logo').hover avant click_link um den Tooltip aus dem Weg zu räumen.

2voto

D.JCode Punkte 388

Versuchen Sie, den Browser zu maximieren, wenn Sie mit Auflösungen von mehr als 1024x768 arbeiten.

driver.manage().window().maximize();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X