Ich möchte die Mouseover-Funktion über ein Dropdown-Menü ausführen. Wenn Sie mit der Maus über das Menü fahren, werden die neuen Optionen angezeigt. Ich habe versucht, mit dem xpath auf die neuen Optionen zu klicken. Kann aber nicht direkt auf die Menüs klicken. Als manuelle Methode versuche ich, mit der Maus über das Dropdown-Menü zu fahren und dann auf die neuen Optionen zu klicken.
Actions action = new Actions(webdriver);
WebElement we = webdriver.findElement(By.xpath("//html/body/div[13]/ul/li[4]/a"));
action.moveToElement(we).build().perform();
java
selenium
selenium-webdriver
mouseover
Pradeep SJ
quelle
quelle
Antworten:
Es ist nicht wirklich möglich, eine Maus-Hover-Aktion auszuführen. Stattdessen müssen Sie alle Aktionen, die Sie ausführen möchten, auf einmal verketten. Gehen Sie also zu dem Element, das die anderen enthüllt, und wechseln Sie dann während derselben Kette zum jetzt offenbarten Element und klicken Sie darauf.
Wenn Sie Aktionsketten verwenden, müssen Sie daran denken, dies wie ein Benutzer zu tun.
quelle
webdriver.findElement(By... something)
vor allem anderen ausgeführt werden (nur so kann das Ergebnis weitergeleitet werdenmoveElement
). Zu diesem Zeitpunkt ist das zweite Element, das Sie suchen möchten, noch nicht sichtbar, da das erste noch über den Mauszeiger bewegt werden muss. Um dies zu beheben, können Sie, wie Sie sagten, Intermediate.perform()
s einfügen. Für den zweitenfindElement
wurde der erste Hoverperform
bearbeitet. Die angegebene Lösung funktioniert möglicherweise, abhängig von der Implementierung der Seite, aber anscheinend waren Ihr und mein Kilometerstand unterschiedlich.Keine dieser Antworten funktioniert, wenn Sie versuchen, Folgendes zu tun:
Wenn Sie nach moveToElement einen Befehl 'perform' einfügen, wird dieser zum Element verschoben, und der Untermenüpunkt wird für einen kurzen Zeitraum angezeigt, dies ist jedoch kein Hover. Das versteckte Element verschwindet sofort, bevor es gefunden werden kann, was zu einer ElementNotFoundException führt. Ich habe zwei Dinge ausprobiert:
Das hat bei mir nicht funktioniert. Folgendes hat bei mir funktioniert:
Mit den Aktionen zum Schweben und dem Standard-WebDriver-Klick konnte ich schweben und dann klicken.
quelle
Basierend auf diesem Blog-Beitrag konnte ich mit dem folgenden Code mit Selenium 2 Webdriver das Schweben auslösen:
quelle
moveToElement
, verwenden Sie dieses! Ich codiere in C #, es ist also nicht nur eine Java-Methode, dies zu tun.Example
arguments[0]
?executeScript()
, das einwebElement
Dieser Code funktioniert einwandfrei:
Nachdem Sie mit der Maus darüber gefahren sind, können Sie die nächste gewünschte Aktion für die angezeigten Informationen ausführen
quelle
using OpenQA.Selenium.Interactions;
Überprüfen Sie in diesem Beispiel, wie wir dies implementieren können.
Eine ausführliche Antwort finden Sie hier - http://www.testautomationguru.com/selenium-webdriver-automating-hoverable-multilevel-dropdowns/
quelle
Ich fand diese Frage auf der Suche nach einer Möglichkeit, dasselbe für meine Javascript-Tests mit Protractor (einem Javascript-Frontend für Selen) zu tun.
Meine Lösung mit Winkelmesser 1.2.0 und Webdriver 2.1:
Dies akzeptiert auch einen Versatz (ich benutze ihn, um über und links von einem Element zu klicken :)
quelle
Beispielprogramm zum Bewegen des Mauszeigers mit Selenium Java WebDriver:
quelle
Du kannst es versuchen:
Wenn das Web viele Kategorien hat, verwenden Sie die erste Methode. Für das gewünschte Menü benötigen Sie nur die zweite Methode.
quelle