Ich versuche, Elemente aus einem Dropdown-Menü basierend auf Eingabe dynamisch auszuwählen. Dies ist nicht wirklich ein Problem, es sei denn Werte teilen einen Namen. Zum Beispiel, wenn dies ist meine Gurke AussageSelen Umgang mit doppelten XPaths des gleichen Typs in Java
When I go to the "Inventory"/"Inventory" application
Als ich nenne diese Methode:
@When("^I go to the \"([^\"]*)\"/\"([^\"]*)\" application$")
public void i_go_to_the_application(String hoverMenu, String subMenuName) throws Throwable {
Actions actions = new Actions(driver);
WebElement menuHoverLink = driver.findElement(By.linkText(hoverMenu));
actions.moveToElement(menuHoverLink);
Thread.sleep(1000);
WebElement submenu = driver.findElement(By.xpath("//span[.='" + subMenuName + "']"));
actions.moveToElement(submenu);
actions.click().perform();
Thread.sleep(4000);
Mein Test Absturz, weil es das subMenuElement nicht finden kann. Dieser Code funktioniert gut, wenn die Menünamen unterschiedlich sind, z. B. Inventar> Elemente.
Jetzt habe ich überprüft diese Frage bereits Selenium: handling multiple inputs with same xpath
jedoch die Lösung bieten scheint nicht hilfreich zu sein, da beide Elemente in dem Dropdown-Menü mit einem ein Untermenü zu, dass man sein: Inventar> Inventar
Ich lief dies durch die Selenium-IDE und egal wie viele Möglichkeiten ich habe versucht, das Inventar-Element zu finden, es findet immer nur ein Element. Da der Benutzer meiner Tests eine beliebige Anzahl von Elementen aus einem Dropdown-Menü und dann nachfolgenden Untermenüs auswählen kann, kann ich mich nicht auf IDs verlassen. Gibt es eine Möglichkeit, den ersten Menüpunkt sicher auszuwählen und dann den Untermenüpunkt auszuwählen.
Sie HTML für dieses Menü teilen könnten und submemu auch –