使用Selenium2在Opera中测试基于框架的web应用程序



我正在使用Selenium 2测试我们基于框架的web应用程序。这是一个简单的代码,它试图登录用户,并在生成的页面上切换到包含页面内容的框架:

driver.get("http://localhost/index.pl");
driver.findElement(By.name("session_username")).sendKeys("my_username");
driver.findElement(By.name("session_password")).sendKeys("my_password");
driver.findElement(By.xpath("//input[@value='log in']")).click();
driver.switchTo().frame("qabody_r_head");

如果我发送类型为FirefoxDriverInternetExplorerDriverHtmlUnitDriverWebDriver,这将正常工作。但是,如果驱动程序的类型是OperaDriver,我会得到一个异常,并输出以下错误。

Exception in thread "main" org.openqa.selenium.NoSuchFrameException: Invalid frame name qabody_r_head
Build info: version: '2.15.0', revision: '15105', time: '2011-12-08 09:57:28'
System info: os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_02'
Driver info: driver.version: unknown
at com.opera.core.systems.scope.services.ums.EcmaScriptDebugger.changeRuntime(EcmaScriptDebugger.java:431)
at com.opera.core.systems.OperaDriver$OperaTargetLocator.frame(OperaDriver.java:772)
at SeleniumTest.testLogin(SeleniumTest.java:26)
at SeleniumTest.main(SeleniumTest.java:59)

我是做错了什么,还是OperaDriver不能处理帧?

这个框架是直接在首页内,还是在子框架内?如果是后者,则可能必须从层次的顶部开始,然后首先选择父帧。

我注意到在框架中使用Dragonfly/测试工具时存在问题,但我认为这些问题已经解决。如果你能在某个地方放一个小演示,我可以看看。。

我在使用OperaDriver时遇到了同样的情况。我想切换到包含在主窗口中的框架。我无法切换到帧,而是出现了以下错误org.openqa.selenium.NoSuchFrameException:无效的帧名称

以下是我在尝试选择帧时采取的步骤:

//...
driver.switchTo().defaultContent();
driver.findElement(By.xpath("//input[@value='Save']")).click();
driver.switchTo().frame("SaveFrame");       
//...

请注意,以上代码在IE、Firefox和Chrome中都能完美工作。

我在测试上述内容时使用了Opera 11.60。我浪费了几个小时,没有找到这个问题的答案。有人为Opera使用switchTo().frame()方法并成功了吗?

最新更新