执行单击后IWebElement崩溃,但仅在页面加载后{1}才会在IE中崩溃

时间:2018-02-21 17:39:21

标签: c# unit-testing selenium webdriver

我有一个包装器,用于处理在浏览器中单击的元素(它包含WebDriverWait)。最后一步是element.Click()。此代码在测试期间成功用于多个元素,但是,当单击标记转换到另一个页面时,IE驱动程序会抛出此异常:

  

类型' OpenQA.Selenium.WebDriverException'的例外情况发生在   WebDriver.dll但未在用户代码中处理

     

其他信息:对远程WebDriver的HTTP请求   URL的服务器   http://localhost:52368/session/fa3cb036-bbff-45b7-b914-03ed03c86d9c/element/bc89665f-94c3-4829-beee-cff4a106cf87/click   60秒后超时。

奇怪的是,点击成功完成,并且发生了页面转换,但驱动程序似乎在该点击功能中寻找其他内容。内在的例外是:

  

{"请求已中止:操作已超时。"}

及其堆栈跟踪是:

  

在   OpenQA.Selenium.Remote.HttpCommandExecutor.MakeHttpRequest(HttpRequestInfo   requestInfo)at   OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(命令   commandToExecute)at   OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(命令   commandToExecute)at   OpenQA.Selenium.Remote.RemoteWebDriver.Execute(字符串   driverCommandToExecute,Dictionary`2参数)at   OpenQA.Selenium.Remote.RemoteWebElement.Click()

我按照步骤设置了IE 11 here,并从here下载了驱动程序的3.8版本(能够在32位版本的3.9上重现)。

什么

1 个答案:

答案 0 :(得分:0)

我使用Selenium.Interactions解决了此问题,例如,如果要单击元素:

var seleniumdriver = new InternetExplorerDriver();
Selenium.Intercactions.Action action = new Action(seleniumdriver);

action.MoveToElement(seleniumdriver.FindElement("your element")).Click().Perfom();

有时,如果它不专注于当前对象,则此解决方案将无法工作。 有关主要信息,您可以访问:https://seleniumhq.github.io/selenium/docs/api/dotnet/html/T_OpenQA_Selenium_Interactions_Actions.htm