单击Selenium 2.33 Java中的隐藏菜单项

时间:2013-06-13 08:08:59

标签: java selenium webdriver

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

 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()而没有Exceptions,子菜单也可见。

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

我使用selenium 2.33 Java with chrome v 27。

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

1 个答案:

答案 0 :(得分:1)

首先,请不要在代码中使用Thread.sleep自从。相反,请使用FluentWait or WebDriverWait commands

现在,为了回答你的问题,似乎你偶然发现了一些人所谓的“挡板”,或者说是“开支测试”。如果你的测试失败了三次左右,那么事情真的很不错。

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