【发布时间】:2018-03-08 12:11:09
【问题描述】:
我正在使用 Selenium 在具有多个下拉菜单的页面上运行测试(特别是一个允许您选择一些选项然后关闭它的弹出页面)。我可以完全点击其中一些菜单;但是,其中一些会引发ElementNotInteractable 异常,并显示消息“无法将元素滚动到视图中”,即使菜单彼此相邻。我很困惑为什么一个菜单有效而另一个无效,即使它们看起来相同。为了点击菜单,我尝试了三件事:
a) 常规 Selenium 点击:
driver.findElement(By.xpath("//select[@foo='bar']").click();
这与其他菜单一起使用,除了我直接导航到“选项”标签并点击它(不需要先点击下拉菜单)
b)Javascript 执行器
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);
当我使用它时,不会抛出异常;但是,菜单仍然是空的,这让我相信它没有被点击。
c)操作
Actions builder = new Actions(driver);
builder.moveToElement(menu).click(menu);
builder.perform();
出于某种原因,当我使用它时,带有下拉菜单的整个弹出窗口将关闭。 :/ (我已经仔细检查过它不是被点击的关闭按钮)
我不确定这是否相关,但 Selenium 在查找元素时没有问题,只是当我尝试单击它们时它才会抱怨。
总而言之,我的问题是:
1) 是什么使菜单不同,一个可点击,一个不可点击?
2) 如何点击第二个菜单并选择一个选项?
编辑:我尝试了在类似问题中找到的解决方案;不幸的是,它不起作用。解决方案是添加显式等待,因为元素可能尚未完全加载,这只会导致超时。
【问题讨论】:
-
嗨!感谢您的链接,我检查了它,但不幸的是,当我按照建议添加显式等待时,它只是超时(无论我设置的最大值如何)。
标签: java selenium drop-down-menu