我正在测试包含大量表单的网页。 该页面包含主要形式和几个子表单。 仅当在主窗体中选择特定值时才呈现特定子窗体。 最近,页面被重建,其方式是子表单在静态页面源中不可见。它们是动态注入和渲染的(最有可能是java脚本,但不确定)。
以下是我的测试中的代码示例。测试适用于Firefox和Chrome,但在IE上失败
if (!keyType.isEmpty())
{
System.out.println(keyTypeInput.isDisplayed());
Select keyTypeSelector = new Select(keyTypeInput);
keyTypeSelector.selectByVisibleText(keyType);
}
注意:keyTypeInput是WebElement。 keyTypeInput.isDisplayed()返回true,但selectByIndex,selectByVisibleText等的keyTypeSelector上的任何调用都会引发以下错误:
2014-07-31 21:23:34,119 [pool-3-thread-1] INFO c.a.q.c.t.CustomTestListener log - LOG LISTENER: 夹= com.qa.devportal.tests.regression.RunAQuery;浏览器= INTERNET_EXPLORER10;测试= verifyResponse;结果=失败; TESTHOST =本地; SESSIONID = 4a6cb35b-b0ef-4681-a6ea-64eaac64520c; SCREENSHOT =可以'吨 保存屏幕截图。; ERROR = org.openqa.selenium.WebDriverException:不能 单击选项元素。执行JavaScript点击功能返回 意外错误,但无法从Internet返回错误 资源管理器的JavaScript引擎。 (警告:服务器没有提供任何服务 stacktrace information)命令持续时间或超时:110毫秒 构建信息:版本:' 2.41.0',修订版: ' 3192d8a6c4449dc285928ba024779344f5423c58',时间:' 2014-03-27 11:29:39'系统信息:主持人:' war-lpt-pstepn',ip:' 10.138.1.72', os.name:' Windows 7',os.arch:' amd64',os.version:' 6.1', java.version:' 1.7.0_45'会话ID: 4a6cb35b-b0ef-4681-a6ea-64eaac64520c驱动程序信息: org.openqa.selenium.ie.InternetExplorerDriver功能 [{platform = WINDOWS,javascriptEnabled = true,elementScrollBehavior = 0, ignoreZoomSetting = false,enablePersistentHover = true, ie.ensureCleanSession = false,browserName = internet explorer, enableElementCacheCleanup = true,unexpectedAlertBehaviour = dismiss, version = 10,ie.usePerProcessProxy = false,cssSelectorsEnabled = true, ignoreProtectedModeSettings = false,requireWindowFocus = false, handlesAlerts = true,initialBrowserUrl = http, ie.forceCreateProcessApi = false,nativeEvents = true, browserAttachTimeout = 0,ie.browserCommandLineSwitches =, takeScreenshot = true}] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 在 org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193) 在 org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145) 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:595) 在 org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:268) 在 org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:79) 在org.openqa.selenium.support.ui.Select.setSelected(Select.java:318) 在 org.openqa.selenium.support.ui.Select.selectByIndex(Select.java:175) 在 com.qa.devportal.pages.ApiExplorerPage.apiRequestParamsFill(ApiExplorerPage.java:290) 在 com.qa.devportal.tests.regression.RunAQuery.verifyResponse(RunAQuery.java:95) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:606)at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84) 在org.testng.internal.Invoker.invokeMethod(Invoker.java:714)at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)at at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)at at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127) 在 org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:615) 在java.lang.Thread.run(Thread.java:744)
你有类似的问题吗?