我正在使用selenium webdriver的c#绑定测试Web应用程序。测试点击了一些带有onclick函数的元素,如(onclick="window.location.href = 'google.com'"
)。当涉及到最后一个元素时,它会单击它并加载下一个javascript图像查看应用程序页面。而不是测试结束,页面在相同的位置保持打开60秒,直到它失败并出现错误:
- 引发WebException 在System.Net.HttpWebRequest.GetResponse() 在OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest request)
结果讯息 OpenQA.Selenium.WebDriverException:对URL http://localhost:27431/session/fd102072-024b-4ccc-99af-4c8e609c027d/element/0843e2a6-82ce-48ff-9ad2-2649585a43dc/click的远程WebDriver服务器的HTTP请求在60秒后超时。 ----> System.Net.WebException:请求已中止:操作已超时。
同样的测试适用于chrome和firefox。该元素肯定会显示并单击。浏览器也正常进入页面,但由于某种原因超时。
答案 0 :(得分:0)
这不是一个新问题。它已存在很长时间了。我一直在stackoverflow和google group阅读有关此问题的内容。虽然这个问题似乎是独一无二的(因为我已经使用了webdriver .net绑定大约两年而且从未遇到过这个问题)但是IEDriver服务器的作者有一个稳固的explanation为什么会这样。很多人建议增加隐性等待可能有所帮助,即使我怀疑会这样做。阅读博客可以帮助您理解问题并找出问题所在。
答案 1 :(得分:0)
你需要做的是......:
InternetExplorerDriverService driverService = InternetExplorerDriverService.CreateDefaultService();
//driverService.HideCommandPromptWindow = true;
driverService.LibraryExtractionPath = Environment.CurrentDirectory;
InternetExplorerOptions options = new InternetExplorerOptions();
options.EnableNativeEvents = true;
options.IgnoreZoomLevel = true;
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
IWebDriver driver = new InternetExplorerDriver(driverService, options, TimeSpan.FromSeconds(180));