如何使用Java在Selenium WebDriver中执行鼠标悬停功能?

我想在下拉菜单上做鼠标悬停功能。当我们将鼠标悬停在菜单上时,它将显示新选项。我尝试使用 xpath 单击新选项。但不能直接单击菜单。因此,作为手动方式,我试图将鼠标悬停在下拉菜单上,然后单击新选项。

Actions action = new Actions(webdriver);
WebElement we = webdriver.findElement(By.xpath("//html/body/div[13]/ul/li[4]/a"));
action.moveToElement(we).build().perform();

答案 1

它实际上不可能执行“鼠标悬停”操作,相反,您需要一次性链接要实现的所有操作。因此,移动到显示其他元素的元素,然后在同一链中,移动到现在显示的元素并单击它。

使用操作链时,您必须记住“像用户一样做”。

Actions action = new Actions(webdriver);
WebElement we = webdriver.findElement(By.xpath("html/body/div[13]/ul/li[4]/a"));
action.moveToElement(we).moveToElement(webdriver.findElement(By.xpath("/expression-here"))).click().build().perform();

答案 2

尝试执行以下操作时,这些答案都不起作用:

  1. 将鼠标悬停在菜单项上。
  2. 查找仅在悬停后可用的隐藏元素。
  3. 单击子菜单项。

如果在 moveToElement 之后插入“执行”命令,它将移动到元素中,子菜单项会显示一小段时间,但这不是悬停。隐藏的元素在找到它之前会立即消失,从而导致 ElementNotFoundException。我尝试了两件事:

Actions builder = new Actions(driver);
builder.moveToElement(hoverElement).perform();
builder.moveToElement(clickElement).click().perform();

这对我不起作用。以下内容对我有用:

Actions builder = new Actions(driver);
builder.moveToElement(hoverElement).perform();
By locator = By.id("clickElementID");
driver.click(locator);

使用“操作”悬停和标准 WebDriver 单击,我可以悬停,然后单击。


推荐