我有一个菜单元素,只有在点击时弹出,然后在失去焦点时淡出。我的任务是单击隐藏的子菜单项。 从以前的类似情况的答案我使用以下代码点击子菜单项。
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。
任何建议都会非常有用,谢谢。
答案 0 :(得分:1)
首先,请不要在代码中使用Thread.sleep
。 自从。相反,请使用FluentWait
or WebDriverWait
commands。
现在,为了回答你的问题,似乎你偶然发现了一些人所谓的“挡板”,或者说是“开支测试”。如果你的测试失败了三次左右,那么事情真的很不错。
我偶尔会注意到click函数并不总是执行实际的点击(即使代码中的每个指示都表明它确实如此)。我想知道你是否正在发生这件事?通常我会检查点击是否发生。如果它尝试点击代码但没有任何反应,我会让它重试点击。如果重试不起作用,那么事情确实有效。