<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>
@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);
当我们移动到列表中的第一个元素时,它会移动到下拉列表中的第一个元素,因为所有子类别的元素都在加载。
为了克服这一点,我们需要在移动到列表中的任何其他元素之前移动到第一个元素。我创造了一种方法来解决你的问题。如果您传递子菜单名称,则它将在子菜单上移动。
代码如下所示。
@Test
public void departmentsDropMusic1() throws Exception {
System.setProperty("webdriver.gecko.driver", "C:\\Projects\\SeleniumDrivers\\geckodriver.exe");
driver = new FirefoxDriver();
driver.get("https://www.amazon.com");
Thread.sleep(5000L);
openSubMenu("Amazon Music");
openSubMenu("Fire TV");
}
public void openSubMenu(String menu) throws InterruptedException{
//mouse over on Main menu 'Departments'
WebElement element = driver.findElement(By.xpath("//a[@id='nav-link-shopall']"));
Actions action = new Actions(driver);
action.moveToElement(element).build().perform();
Thread.sleep(5000L);
//verify sub menus are listed or not
WebElement dropDown = driver.findElement(By.cssSelector("#nav-flyout-shopAll"));
if (dropDown.isDisplayed()) {
System.out.println("pass");
} else {
Assert.fail();
}
//
WebElement subMenu1 = driver.findElement(By.cssSelector("#nav-flyout-shopAll > div.nav-tpl-itemList>span:nth-child(1)"));
WebElement subMenuWantedToOpen = driver.findElement(By.cssSelector("#nav-flyout-shopAll > div.nav-tpl-itemList>span[aria-label='"+menu.trim()+"']"));
action.moveToElement(subMenu1).moveToElement(subMenuWantedToOpen).build().perform();
Thread.sleep(5000L);
WebElement subMenuCat = driver.findElement(By.cssSelector(".nav-subcats > div.nav-subcat[style='display: block;']"));
if(subMenuCat.isDisplayed()){
System.out.println(subMenuCat.getText());
}
}
任务是将物理光标移动到元素。 尝试以下操作: 和以下内容:
================================ 操作系统:Win7 硒:2.33.0 Firefox:22.0 Python:2.7.4 ================================ 我想用“move_to_element”方法将鼠标光标移动到元素“input”上,但不能这样做。 有人有这个问题吗? ==============================
问题内容: 因此,正如标题所述,我想在鼠标拖动时移动椭圆。我先声明了椭圆并将其画出(因为我有8个椭圆,它们带有不同的颜色信息。四个是白色,另一个是红色)。我尝试做我对矩形所做的事情: 但这似乎不起作用。它给我一个错误 我有点困惑,因为我已经阅读了文档,并且Ellipse2D.Double存在这样的变量。 这是一个MCVE: 那么是否有替代算法,或者我只是在语法上缺少什么?我想知道解决方案。谢谢。
我正在开发nodejs,我添加了selenium模块。现在我被困在点击按钮上。我必须通过将鼠标指针移动到元素位置来点击。并且需要点击它。所以有人告诉我如何使用ActionSequence在特定的x y坐标上移动鼠标并用selenium上下点击鼠标。 我已经搜索过了,但只得到了与Java相关的解决方案。
我们将深入研究鼠标在元素之间移动时发生的事件。 事件 mouseover/mouseout,relatedTarget 当鼠标指针移到某个元素上时,mouseover 事件就会发生,而当鼠标离开该元素时,mouseout 事件就会发生。 这些事件很特别,因为它们具有 relatedTarget 属性。此属性是对 target 的补充。当鼠标从一个元素离开并去往另一个元素时,其中一个元素就变成了 t
我使用Selenium和C#执行单击操作。 我可以执行点击操作,但我不能将鼠标指针(光标)移动到特定坐标或特定元素上。 这是我正在使用的代码。上下文单击正在工作,但光标未移动。 帮帮我。