Ich automatisiere amazon.com, und ich versuche gerade, zu einem bestimmten Element in einem Dropdown-Menü zu bewegen. Egal wie spezifisch ich meinen XPath für dieses Element mache, WebDriver wird nur die Maus zum ersten Element in der Liste bewegen. HierSelenium WebDriver Java - Maus bewegt sich auf falsches Element
ist der HTML-Code:
<div class="nav-template nav-flyout-content nav-tpl-itemList">
<span class="nav-hasPanel nav-item" data-nav-panelkey="InstantVideoPanel" role="navigation" aria-label="Amazon Video">
<span class="nav-text">Amazon Video</span>
</span>
<span class="nav-hasPanel nav-item" data-nav-panelkey="DigitalMusicPanel" role="navigation" aria-label="Amazon Music">
<span class="nav-text">Amazon Music</span>
</span>
<span class="nav-hasPanel nav-item" data-nav-panelkey="AndroidPanel" role="navigation" aria-label="Appstore for Android">
<span class="nav-text">Appstore for Android</span>
</span>
Hier ist meine Automatisierungscode:
@Test
public void departmentsDropMusic1() throws Exception {
driver = new FirefoxDriver();
driver.get("https://www.amazon.com");
Thread.sleep(3000L);
WebElement element = driver.findElement(By.xpath("//a[@id='nav-link-shopall']"));
Actions action = new Actions(driver);
action.moveToElement(element).build().perform();
Thread.sleep(3000L);
WebElement dropDown = driver.findElement(By.cssSelector("#nav-flyout-shopAll > div:nth-child(2)"));
if (dropDown.isDisplayed()) {
System.out.println("pass");
} else {
Assert.fail();
}
WebElement musicSubMenu = driver.findElement(By.xpath(//span[contains(text(), 'Amazon Music')]"));
action.moveToElement(musicSubMenu).build().perform();
Thread.sleep(3000L);
ich andere XPaths auch versucht haben, die verschiedenen Markierungen in den HTML-Code versehen mit, keine in Anspruch nehmen. WebDriver wird nur zum ersten Element (Aria-Label "Amazon Video") und nicht zu den anderen aufgelisteten Elementen verschoben.
Interessanterweise gibt es keine Probleme, wenn ich eine for-Schleife verwenden, um durch alle Elemente in dem Menü zu wechseln.
Was passiert genau? Irgendwelche Fehler, wenn Sie versuchen, die Maus zu den anderen Menüpunkten zu bewegen? – alecxe
Was ich denke, es gibt mehrere Elemente mit dem gleichen XPath. So Selen, standardmäßig Maus bewegt sich auf das erste identifizierte Element mit diesem Xpath (in der Regel das oberste Element im DOM). Wir können den Index im X-Pfad verwenden, um auf das spezielle Auftreten des XPath hinzuweisen. –
Bitte lesen Sie, warum ein [** 'Screenshot von HTML oder Code oder Fehler eine schlechte Idee ist '**] (https://meta.stackoverflow.com/questions/303812/discourage-screenshots-of-code-and-or Fehler). Erwägen Sie, die Frage mit formatierten textbasierten HTML- und Code-Tests zu aktualisieren. – DebanjanB