Ich verwende Selenium 3.0.1 für die Durchführung von Automatisierungstests mit TestNG. In einem Test Ich versuche, über ein Aktionsmenü zu schweben und dann in diesem Menü eine Option klicken:moveToElement Mouse Hovering-Funktion in Selenium WebDriver mit Java nicht stabil
Actions builder = new Actions(getWebDriver());
builder.moveToElement(actionButton).build().perform();
Aber der Test ist nicht stabil. Ich kann sehen, dass sich das Menü öffnet, aber sofort schließt, so dass der Test fehlschlägt, weil er die Option nicht mehr findet. Ich erhalte diese Fehlermeldung:
java.lang.IllegalArgumentException: Must provide a location for a move action.
at org.openqa.selenium.interactions.MoveMouseAction.<init>(MoveMouseAction.java:30)
at org.openqa.selenium.interactions.Actions.moveToElement(Actions.java:251)
Wie kann ich überprüfen, ob das Menü geöffnet ist? Die Methode perform() gibt void zurück. Ich merke, wenn ich das moveToElement zweimal aufrufen, dann ist der Test stabiler. Gibt es eine elegante Option?
Actions builder = new Actions(getWebDriver());
builder.moveToElement(actionButton).build().perform();
builder.moveToElement(actionButton).build().perform();
Dieses, wie das Menü aussieht, wenn wir über sie schweben:
ich dieses Problem finden: https://sqa.stackexchange.com/questions/3467/issue-with-losing-focus-of-hover-command-when-the-mouse-is-outside-of-the-acti , die am besten mein Problem erklärt. leider immer noch ohne lösung.
Das Problem hierbei ist, dass das Menü funktioniert öffnet, aber schließt unmittelbar vor Selenium das Untermenü Taste finden kann. Ich denke, FluentWait wird hier nicht helfen, denn die Speisekarte ist schon geschlossen, so dass es nur auf nichts warten wird. Bitte korrigieren Sie mich, falls ich falsch liege. Ich suche nach einer Möglichkeit, das Dropdown-Menü nach dem Öffnen einzufrieren, ohne es anzuklicken. – sami610
Es ist schwer zu sagen, wenn Sie falsch liegen, ohne das Loch-Szenario und die Website selbst zu sehen ... Also würde ich Sie ermutigen, die Wartezeit zuerst zu versuchen. – Moshisho
Funktioniert es nicht auch mit JavascriptExecutor? ((JavascriptExecutor) -Treiber) .executeScript ("$ ('element_selector'). Hover();"); –