【问题标题】:Selecting an option in a CSS-based menu with WebDriver使用 WebDriver 在基于 CSS 的菜单中选择一个选项
【发布时间】:2012-06-17 07:23:56
【问题描述】:

我有一个简单的CSS-based dropdown menu,我正在尝试单击 Java Selenium (WebDriver) 测试中的菜单项之一。

菜单(<ul> 元素)和项目(<a>)都有 ID,创建相应的 WebElement 对象可以正常工作。我正在尝试使用以下代码单击其中一项:

   hoverOver(transfersMenu);
   transferLink.click();

hoverOver()我尝试过all three answers from this question,但都没有工作。我不断得到:

org.openqa.selenium.ElementNotVisibleException: 
    Element is not currently visible and so may not be interacted with 
Command duration or timeout: 2.06 seconds

(我也尝试过调用transferLink.click()之前 hoverOver(),希望隐式等待可以使其工作,但不行。)

知道如何使悬停工作以便可以点击链接吗?

Selenium 版本 2.21.0。我正在使用 Firefox 13.0 在 Linux (Ubuntu) 上运行测试。一位同事刚刚在 Windows 上尝试过(使用 Firefox 12.0),但对他也不起作用。

更新:根据 Slanec 在 cmets 和 these instructions 中的提示,我在 FirefoxProfile 上尝试了 setEnableNativeEvents(true)。起初这失败了:

org.openqa.selenium.InvalidElementStateException: 
    Cannot perform native interaction: Could not load native events component.

...但是在我升级到 Selenium 2.23.1 后,我不再收到该投诉。

仍然,悬停不起作用(打开或关闭本机事件)。 :-/

【问题讨论】:

  • 链接问题中接受的解决方案应该有效=/。您在运行测试时实际看到了什么? hoverOver() 是否以可视方式打开列表?
  • 一些用户对相关问题有不同的疑问,还建议打开/关闭原生事件。
  • @Slanec:它不会在视觉上打开菜单。 (我通过测试的唯一方法是手动将鼠标悬停在菜单上,这允许 Selenium 单击菜单项。)嗯,我会研究原生事件...
  • @Slanec:也没有让它与原生事件一起工作......请参阅更新的问题。

标签: java drop-down-menu selenium hover webdriver


【解决方案1】:

我使用以下代码将鼠标悬停在我们的菜单上 1 秒钟,然后单击链接,就像您正在使用的那样:

action = new SeleniumActionHelper(driver);

WebElement currentUser = findElementByLinkText("testing1");
action.mouseHover(currentUser);
Thread.sleep(1000);

值得注意的是,鼠标光标需要保留在浏览器窗口中才能保持悬停。如果鼠标光标在浏览器窗口之外,我会体验到菜单的快速闪烁,但它不会保持可见

【讨论】:

  • 应该提到SeleniumActionHelper似乎来自一个名为PrimeFaces的项目,而mouseHover()所做的本质上是same as this
  • 因此与我已经尝试过的唯一区别是Thread.sleep(1000) - 我尝试过但仍然不适合我。无论如何,谢谢。
【解决方案2】:

试试这个例子:

WebElement menuHoverLink= driver.findElement(By.id("test"));
actions.moveToElement(menuHoverLink).perform();
driver.findElement(By.id("test")).click();
Thread.sleep(6000); 

【讨论】:

  • 我不再从事该产品(或该公司)的工作,因此我无法(轻松)尝试您的解决方案。也许这对其他人有所帮助。
【解决方案3】:

您如何运行测试课程?我发现通过 ANT 运行 WebDriver 使悬停动作变得不可能,而从命令行 (TestNG JAR) 或从 Eclipse 运行测试类就可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多