这让我疯狂,我只需要WebDriver右键单击一个元素,其余的硒就可以工作。无法右键单击,Java Selenium WebDriver java.lang.UnsupportedOperationException:contextMenu
我正在使用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:文本菜单。
有一个元素直到该行被右键单击才被视为“可见”。它被检测为存在,但硒将不会运行它,除非我在WebDriver中手动右键单击它以使其可见。否则,它只是给了我:
com.thoughtworks.selenium.SeleniumException:元素当前不可见,因此可能不会与之交互。
右键单击该行是使元素“可见”的原因,这就是为什么我需要使硒右键单击非常糟糕。我已经测试过,以确保不存在的元素被检测为存在,它是。
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作为右键点击的替代品,这并不好。
这一切工作中硒IDE很好,但我需要它与webdriver的工作,所以我乱用它在Java中。请帮助我。
编辑:感谢Slanec的建议和更多与行动生成器搞乱,我发现这是我的硒webdriver不是最新的Firefox 14的问题。这很奇怪,考虑我以为我已经下载了最新的就在上周四。无论哪种方式,直到webdriver 2.25.0,我都使用了Firefox 14的本机事件支持,而我使用的是2.24.1。
看看这篇文章是否有助于http:// stackoverflow.com/questions/7647154/webdriver-contextclickwebelement-not-opening-the-context-menu – anazimok 2012-07-21 00:43:02
唉,我已经试过了。我得到:线程“main”中的异常org.openqa.selenium.InvalidElementStateException:无法执行本地交互:无法加载本地事件组件。即使我有profile.setEnableNativeEvents(true);但当我尝试使用动作进行操作时,它仍会给我那个错误。有没有办法让Firefox停止关注某个元素是否隐藏? – Mike 2012-07-21 00:51:47
是否有任何特殊的原因,您通过旧的Selenium界面使用新的WebDriver?在你必须支持之前,你是否继承了一套测试套件,还是对旧格式感到满意? – 2012-07-21 07:27:30