【发布时间】:2017-01-10 22:45:13
【问题描述】:
我正在尝试根据输入从下拉菜单中动态选择项目。除非值共享一个名称,否则这并不是真正的问题。例如,如果这是我的 Cucumber 语句
When I go to the "Inventory" / "Inventory" application
当我调用这个方法时:
@When("^I go to the \"([^\"]*)\" / \"([^\"]*)\" application$")
public void i_go_to_the_application(String hoverMenu, String subMenuName) throws Throwable {
Actions actions = new Actions(driver);
WebElement menuHoverLink = driver.findElement(By.linkText(hoverMenu));
actions.moveToElement(menuHoverLink);
Thread.sleep(1000);
WebElement submenu = driver.findElement(By.xpath("//span[.='" + subMenuName + "']"));
actions.moveToElement(submenu);
actions.click().perform();
Thread.sleep(4000);
我的测试崩溃了,因为它找不到 subMenuElement。如果菜单名称不同,例如 Inventory > Items,则此代码可以正常工作。
现在我已经检查了这个问题 Selenium: handling multiple inputs with same xpath
但是提供的解决方案似乎没有帮助,因为这两个元素都在下拉菜单中,其中一个是该下拉菜单的子菜单:库存 > 库存
我通过 selenium IDE 运行了这个,无论我尝试了多少种方法来“找到” Inventory 元素,它都只能找到一个项目。由于我的测试用户可以从下拉菜单和随后的子菜单中选择任意数量的项目,因此我不能依赖 ID。有没有办法确定选择第一个菜单项,然后选择子菜单项。
【问题讨论】:
-
你能分享一下这个菜单和子菜单的 HTML
标签: java selenium xpath cucumber