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.

10voto

Sujeewa Punkte 701

Versuchen Sie zunächst, den neuesten Chrome-Treiber zu installieren, und prüfen Sie, ob das Problem dadurch gelöst wird.

In meinem Fall wurde das Problem dadurch nicht behoben. Aber die folgende Lösung hat bei mir bisher funktioniert. Der folgende Code ist in C#, aber Sie können dieselbe Logik in Ihrer eigenen Sprache verwenden. Was wir hier tun, ist,

Schritt 1: Fokussieren Sie das Element mit dem Selenium Actions Objekt,

Schritt 2: Klicken Sie dann auf das Element

Schritt 3: Wenn es eine Ausnahme gibt, dann lösen wir ein Javascript "Click"-Ereignis auf dem Element aus, indem wir das Javascript-Skript durch die "ExecuteScript"-Methode des Selenium-Browsertreibers ausführen.

Sie können auch die Schritte 1 und 2 überspringen und nur Schritt 3 versuchen. Schritt 3 würde an sich funktionieren, aber ich bemerkte einige seltsame Verhalten in einem Szenario, in dem Schritt 3, obwohl es erfolgreich das Element geklickt, verursacht unerwartetes Verhalten in anderen Teilen meines Codes nach dem Klicken des Elements.

            try
            {
                //Setup the driver and navigate to the web page...
                var driver = new ChromeDriver("folder path to the Chrome driver");
                driver.Navigate().GoToUrl("UrlToThePage");

                //Find the element...
                var element = driver.FindElement(By.Id("elementHtmlId")); 

                //Step 1
                new Actions(driver).MoveToElement(element).Perform();  

                //Step 2
                element.Click();
            }
            catch (Exception)
            {
                //Step 3
                driver.ExecuteScript("document.getElementById('elementHtmlId').click();");

            }

10voto

psr Punkte 2349

Ich war immer das gleiche Problem beim Ausführen von Selenium-Skript in Python. Hier ist, was ich verwendet, um auf das Element zu klicken:

from selenium.webdriver.common.action_chains import ActionChains

ActionChains(driver).click(element).perform()

7voto

Roger Garza Punkte 1303

Ich habe diese Methode auf der Grundlage eines Kommentars in Tony Lâmpadas Antwort entwickelt. Sie funktioniert sehr gut.

def scroll_to(element)
  page.execute_script("window.scrollTo(#{element.native.location.x}, #{element.native.location.y})")
end

5voto

Sindhukumari P Punkte 182

Heute hatte ich das gleiche Problem. Sie werden mir nicht glauben, wenn ich sage, wie ich das Problem gelöst habe.

By maximizing the browser size

Ja, es handelt sich um ein Zeigerproblem, d. h. um die Größe des Browsers. Dazu müssen Sie nur die Fenstergröße manuell oder über den Code maximieren.

4voto

Milind Punkte 4281

Ich war mit einem ähnlichen Problem konfrontiert, bei dem ich zwei Kontrollkästchen nacheinander ankreuzen muss, aber ich bekam den gleichen Fehler wie oben. Daher habe ich zwischen meinen Schritten zum Ankreuzen der Kontrollkästchen eine Wartezeit eingefügt. .... Es funktioniert gut und großartig, hier sind die Schritte: -

  When I visit /administrator/user_profiles
  And I press xpath link "//*[@id='1']"
  Then I should see "Please wait for a moment..."
  When I wait for 5 seconds
  And I press xpath link "//*[@id='2']"
  Then I should see "Please wait for a moment..."
  When I visit /administrator/user_profiles_updates

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