0

我有一个菜单元素,仅在单击时才会弹出,然后在失去焦点时淡出。我的任务是单击隐藏的子菜单项。从以前对类似情况的回答中,我使用以下代码单击子菜单项。

 Actions builder = new Actions(driver);
 WebElement mainMenuElement= driver.findElement(By.id("Mainmenu"));
 builder.moveToElement(mainMenuElement).build().perform();
 mainMenuElement.click();
 Thread.sleep(2000);
 WebElement mySubMenu=driver.findElement(By.xpath("//a[text()='Kit Components']"));
 mySubMenu.click();

但是,当我在 chrome v 27 中运行代码时,三倍左右的子菜单项永远不会被点击。主菜单打开并永远保持静止。但是 submenu.click() 每次都会执行,没有异常,并且子菜单也是可见的。

这是因为我的代码吗?或者这可能是因为子菜单项具有单击的本地化区域?即当我手动单击子菜单时,单击仅适用于文本,而不适用于元素的剩余空白区域。

我使用 selenium 2.33 Java 和 chrome v 27。

任何建议都会非常有帮助,谢谢。

4

1 回答 1

1

首先,请不要Thread.sleep在您的代码中使用。曾经。而是使用FluentWaitorWebDriverWait命令

现在,为了回答您的问题,您似乎偶然发现了一些人所说的“flapper”或“flakey test”。如果你的测试失败了三分之一左右,那么事情真的很糟糕。

我偶尔注意到点击函数并不总是执行实际的点击(即使代码中的每个指示都表示它确实如此)。我想知道你是否正在发生这种情况?通常我会检查一下点击是否发生。如果它尝试点击代码但没有任何反应,我会让它重试点击。如果重试不起作用,那么确实有问题。

于 2013-06-14T05:25:13.147 回答