这让我发疯,我只需要 WebDriver 右键单击一个元素,我的 selenium 的其余部分就可以工作了。
我正在使用 Eclipse,我所有的 .jar 导入和库都设置正确。
WebDriver driver = new FirefoxDriver();
String baseUrl = "http://............/";
selenium = new WebDriverBackedSelenium(driver, baseUrl);
很久以后,在我的代码中,我在想要执行右键单击的 javascript portlet 行内左键单击,没有任何问题。
selenium.click("//tr[@id[contains(.,'Equipment')]]");
这工作得很好,被点击的行被突出显示,就像它应该做的那样。
现在我只需要右键单击它,但我不能!试:
selenium.contextMenu("//tr[@id[contains(.,'Equipment')]]");
无法右键单击,并返回错误:java.lang.UnsupportedOperationException: contextMenu。
在右键单击该行之前,有一个元素不被视为“可见”。它被检测为存在,但 selenium 不会运行它,除非我自己在 WebDriver 中运行时手动右键单击它以使其可见。否则,它只会给我这个:
com.thoughtworks.selenium.SeleniumException:元素当前不可见,因此可能无法与之交互。
右键单击该行是使元素“可见”的原因,这就是为什么我需要如此糟糕地右键单击 selenium。我已经测试以确保不可见元素被检测为存在,它是。
boolean exists = selenium.isElementPresent("//a[@id[contains(.,'faction')]]");
boolean visible = selenium.isVisible("//a[@id[contains(.,'faction')]]");
System.out.println("Exists: " + exists);
System.out.print("Visible: " + visible);
给我
Exists: true
Visible: false
换句话说,这不是我的 xpath 的问题。在那里。它只是不“可见”。我也尝试发送 Shift+F10 作为右键单击的替代品,不好。
这一切在 Selenium IDE 中运行良好,但我需要它与 WebDriver 一起使用,以便我可以在 Java 中处理它。请帮帮我。
编辑:感谢 Slanec 的建议和更多的操作构建器,我发现我的 selenium webdriver 不是最新的 Firefox 14 的问题。这很奇怪,考虑到我以为我刚刚在上周四下载了最新的. 无论哪种方式,显然直到 webdriver 2.25.0 才添加对 Firefox 14 的本机事件支持,而我使用的是 2.24.1。