为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用Java在SeleniumWebDriver中执行鼠标切换功能?

/ 猿问

如何使用Java在SeleniumWebDriver中执行鼠标切换功能?

HUWWW 2019-10-12 11:07:53

如何使用Java在SeleniumWebDriver中执行鼠标切换功能?

我想在下拉菜单上做鼠标操作。当我们悬停在菜单上时,它会显示新的选项。我尝试使用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();


查看完整描述

3 回答

?
慕码人8056858

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

在使用ActionChain时,您必须记住‘像用户那样做’。

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();




查看完整回答
反对 回复 2019-10-13
?
白衣非少年

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

  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单击,我可以悬停,然后单击。



查看完整回答
反对 回复 2019-10-13
?
一只萌萌小番薯

基于这,这个我的博客文章使用Selenium2Webriver使用以下代码触发了悬停:

String javaScript = "var evObj = document.createEvent('MouseEvents');" +
                    "evObj.initMouseEvent(\"mouseover\",true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);" +
                    "arguments[0].dispatchEvent(evObj);";((JavascriptExecutor)driver).executeScript(javaScript, webElement);



查看完整回答
反对 回复 2019-10-13

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信