在Selenium中测试智能菜单时,子菜单不会在悬停时暴露出来



标准硒鼠标悬停/悬停机制不工作

Actions builder = new Actions(driver);                 
builder.click(actionsButton).moveToElement(addNewLink).build().perform();

然而,点击操作出乎意料地起作用:

Actions builder = new Actions(driver);  
builder.click(actionsButton).click(addNewLink).build().perform();

这与用户浏览菜单时发生的情况正好相反——它们在悬停时暴露出来,在单击时关闭。

罪魁祸首原来是Smartmenus。它有一个非标准的代码,使用鼠标的缺失来检测移动设备。当检测到移动设备时,智能菜单将停止识别悬停,而是开始响应单击/点击。

无论Selenium做了什么来模拟鼠标移动,都不能让Smartmenus相信真正的鼠标是存在的。

在用户在运行Selenium测试的计算机上移动鼠标的情况下,切换到点击而不是悬停也不能可靠地工作。

我已经找到了一个变通方法,尝试点击,如果不成功,切换到悬停:

Actions builder = new Actions(driver);
builder.click(actionsButton).click(addNewLink).build().perform();
try {
wait.until(ExpectedConditions.visibilityOf(pcLink));
}
catch (TimeoutException e) {
builder.click(actionsButton).moveToElement(addNewLink).build().perform();
wait.until(ExpectedConditions.visibilityOf(pcLink));
}
pcLink.click();

最新更新