我在Windows 7 32位操作系统上使用Visual Studio 2010 C#和IEDriverServer.exe Webdriver版本2.42。
简而言之,我找到一个元素并单击它,操作就完成了(单击该元素并导致弹出窗口(不是新窗口)关闭)但代码似乎等待一段时间,然后抛出错误Click()行上的(WebDriverException)。
几乎好像它没有意识到它成功地完成了它的任务。
try
{
popup.FindElement(By.ClassName("inbox_mainclose")).Click();
}
catch (WebDriverException)
{
}
我不知道如何调试这个,而在错误之外没有任何错误,导致我的应用程序退出。
我很乐意听到遇到或克服这个问题的任何人。
编辑异常信息。
OpenQA.Selenium.WebDriverException未处理Message = HTTP 请求远程WebDriver服务器获取URL
http://localhost:51989/session/e151b5bd-e473-4625-912b-aa2ba5c9e8de/element/c63f25fb-4b36-4de8-8474-aec538b84808/click
60秒后超时。Source = WebDriver StackTrace: 在OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest) 请求) C:\项目\ webdriver的\ DOTNET的\ src \ webdriver的\远程\ HttpCommandExecutor.cs:行 150
在OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(命令 commandToExecute)in C:\项目\ webdriver的\ DOTNET的\ src \ webdriver的\远程\ HttpCommandExecutor.cs:行 114
在OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(命令 commandToExecute)in C:\项目\ webdriver的\ DOTNET的\ src \ webdriver的\远程\ DriverServiceCommandExecutor.cs:行 73
在OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String 中的driverCommandToExecute,Dictionary`2参数) C:\项目\ webdriver的\ DOTNET的\ src \ webdriver的\远程\ RemoteWebDriver.cs:行 852
在OpenQA.Selenium.Remote.RemoteWebDriver.InternalExecute(String 中的driverCommandToExecute,Dictionary`2参数) C:\项目\ webdriver的\ DOTNET的\ src \ webdriver的\远程\ RemoteWebDriver.cs:行 745
在OpenQA.Selenium.Remote.RemoteWebElement.Execute(String commandToExecute,Dictionary`2 parameters)in C:\项目\ webdriver的\ DOTNET的\ src \ webdriver的\远程\ RemoteWebElement.cs:行 810
在OpenQA.Selenium.Remote.RemoteWebElement.Click()中 C:\项目\ webdriver的\ DOTNET的\ src \ webdriver的\远程\ RemoteWebElement.cs:行 336
在site_test.Form1.myClick(IWebElement webel)中 C:\ Users \ eltegs \ Documents \ Visual Studio 2010 \ Projects \ site_test \ site_test \ Form1.cs:第42行
at site_test.Form1。<> c__DisplayClass1.b__0()in C:\ Users \ eltegs \ Documents \ Visual Studio 2010 \ Projects \ site_test \ site_test \ Form1.cs:第240行 在System.Threading.ThreadHelper.ThreadStart_Context(对象状态)
在System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback回调,对象状态) at System.Threading.ThreadHelper.ThreadStart()InnerException:System.Net.WebException 消息=操作已超时 来源=系统 堆栈跟踪: 在System.Net.HttpWebRequest.GetResponse() 在OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest) 请求) C:\项目\ webdriver的\ DOTNET的\ src \ webdriver的\远程\ HttpCommandExecutor.cs:行 142 的InnerException:
答案 0 :(得分:1)
经过对网络的进一步研究后,我发现这也是其他网络驱动程序中的一个问题,包括chrome和firefox,并且已经存在了18个月没有修复。
我的解决方案是获取对弹出元素的(" inbox_mainclose")子元素的引用,将其传递给另一个线程并在那里执行单击。
这会导致新线程等待请求超时,我的主线程继续工作。
我写这个作为答案,因为问题出在webdriver外部库中。