Selenium WebDriver Klicken Sie auf() kann nicht mit IE9
(Ich habe viele andere ähnliche Beiträge in SO und haben es leider nicht gelungen, dieses problem zu lösen, so hier geht...)
Bin ich mit Selenium WebDriver (C# - Implementierung, version 2.15) zu fahren eine Recht einfache Webseite. Die Seite enthält ein Formular mit zwei < input >'s nach Benutzernamen und Kennwort, und eine < input > für die Einreichung des form. Ich kann erfolgreich geben Sie Werte für Benutzername und Passwort, aber das Click () - Aufruf auf den submit-button scheint keine Wirkung.
Pro andere Empfehlungen, ich habe versucht, die folgenden tricks, von denen keines gearbeitet hat:
- Ändern Fenster den Fokus zu currentWindowHandle
- Klicken Sie auf das element parent, dann auf das element
- Fügen Sie eine lange impliziten warten
- Fügen Sie eine lange explizites warten (schlafen 20 Sekunden)
- Auf eine ganze Reihe von Zeiten auf das element
- Verwenden Submit() statt der Taste()
- Senden Sie die Tasten "\n", um das element (Selen meldet dies als Fehler)
Beachten Sie, dass ich habe überprüft, dass der < input > - Taste ist in der Tat erfolgreich gefunden, so dass doesn ' T scheinen ein problem zu sein.
Beachten Sie auch, dass ich überprüft haben, die Taste funktioniert in der Tat außerhalb der Selen-land. Das heißt, ich kann durchsuchen Sie die Website, geben Sie die Anmeldeinformationen, und klicken Sie auf die Schaltfläche "senden" (und es funktioniert!).
Beachten Sie auch, dass dieses problem ist auf IE. Es tritt nicht auf, bei mir mit Chrome und FF7.
So, dass sagte, hat jemand irgendwelche anderen Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist Ihre Website wieder öffentlich verfügbares für test? Ist Ihre IE zoom-Stufe bei 100%? Es ist eine Voraussetzung für den einheitlichen klicken Sie auf events zu arbeiten, die Dokumentation hier
Wenn dies nicht funktioniert, dann scheint es ein bug in webdriver. Sollten Sie öffnen ein Problem hier.
Nachdem dies gesagt ist, könnten Sie wahrscheinlich gehen die Java-script-route in der Zwischenzeit als eine vorübergehende Lösung. So etwas wie,
Es sieht aus wie es möglicherweise ein problem mit wo der Mausklick erfolgt. Ich habe versucht, mit der Aktionen-Mechanismus in Selen zu zwingen, ein Mausklick mit ein wenig Versatz. Erfolgreich klicken Sie auf das element:
Hatte ich dieses problem. Ich kann mich nicht erinnern, den post gefunden, wo ich die Auflösung fand ich aber, dass die folgenden arbeitete für mich:
Auf eine Schaltfläche:
Funktioniert jedes mal.
War ich auch Probleme mit dem senden das click-Ereignis, um eine Zeile in der Tabelle. Manchmal sind die .Klicken Sie auf() würde tatsächlich senden Sie die Veranstaltung, um die Zeile oben (wir haben eine furchtbar komplizierte Tabelle Struktur, die eine versteckte radio-button in es die ist auch nicht anklickbar mit Selen). Die oben genannten hack nicht funktionieren würde mit den Zellen waren, zugänglich durch eine FindElement.
In dem Ende das einzige, was gearbeitet wurde, um das Bild zu wählen, dass innerhalb dieser Zeile und senden Sie den klicken, die.
Hoffe, das hilft.
Sehe ich mehrere Lösung hier, aber ich dachte, ich würde teilen, was für mich gearbeitet hat, im Fall jemand, den es brauchte einen anderen Ansatz. Ich hatte ein ähnliches problem, bei mir war die Lösung so einfach wie das klicken mit einer anderen Methode
Beispielsweise
Verwenden
FindElement(By.CSSSelector("'CSSPath'"))
; Wenn Sie irgendwelche CSS angewendet, um die Schaltfläche mehr konsistent alternativ schreiben Sie anderen mehrere Aussagen zu finden, die das element mit alternativen Mitteln wie dem ID-tag oder so mit derWebDriverWait
MethodeSein können, müssen Sie Enable Native Veranstaltungen zu "true" ist, wenn Sie es läuft auf dem IE und wenn Sie möchten, führen Sie den gleichen code in FF und Chrome,dann brauchen Sie, um Native Events "true" in diesen Browsern auch.
Können Sie tun, wenn Sie die Einstellung der Browser, auf dem Sie ausführen möchten.
Try-code -
versuchen Sie, diese..
WebElement hiddenWebElement =d....findElement(By.xpath(xpath));
((JavascriptExecutor)d).executeScript("arguments[0].klicken Sie auf()",hiddenWebElement);
Folgendes bei mir funktioniert:
Als fireEvent unterstützt nur IE, daher die alternative.
Noch eine mögliche Problemumgehung können Sie gerne wiederholen klicken wie:
Weil 1. klicken Sie einfach setzen Sie den Fokus und 2. führt man die echten auf. Es funktionierte für mich.