最近,我在虚拟机上使用Selenium WebDriver运行Internet Explorer自动化时遇到间歇性错误。这些测试通过Microsoft Test Manger在虚拟机上运行。我很难弄清楚发生了什么。

selenium-webdriver - Selenium IEDriverServer.exe在虚拟机上崩溃-LMLPHP

对于发生此问题的尝试运行的测试,将记录以下内容:
异常:OpenQA.Selenium.WebDriverException:URL http://localhost:56645/session/2762cafb-d3c9-4d9a-a0a5-05463e69b7b7/moveto向远程WebDriver服务器的HTTP请求在60秒后超时。 ---> System.Net.WebException:操作已超时

当测试失败时,我会写异常消息并将堆栈跟踪记录到文件中。但是在这种情况下,实际上没有堆栈。期待更深的东西。

System.Net.WebException: The operation has timed out
   at System.Net.HttpWebRequest.GetResponse()
   at OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest request)

这是发生故障时来自eventviewer的详细信息:
Log Name:      Application
Source:        Application Error
Date:          8/28/2015 9:02:09 AM
Event ID:      1000
Task Category: Application Crashing Events
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      xxxxxxxxxxxxxxxxxx
Description:
Faulting application name: IEDriverServer.exe, version: 2.44.0.0, time stamp: 0x5449666f
Faulting module name: IED4C2A.tmp, version: 0.0.0.0, time stamp: 0x5449666b
Exception code: 0xc0000005
Fault offset: 0x000a41e6
Faulting process id: 0xf2c
Faulting application start time: 0x01d0e191ad6d3d19
Faulting application path: C:\AutomationDrivers\IEDriverServer.exe
Faulting module path: C:\Users\SACCTO~Z\AppData\Local\Temp\IED4C2A.tmp
Report Id: fd4f5070-4d84-11e5-891b-00155d6e673e
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Application Error" />
    <EventID Qualifiers="0">1000</EventID>
    <Level>2</Level>
    <Task>100</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2015-08-28T13:02:09.000000000Z" />
    <EventRecordID>14302</EventRecordID>
    <Channel>Application</Channel>
    <Computer>xxxxxxxxxxxxxxxxxx</Computer>
    <Security />
  </System>
  <EventData>
    <Data>IEDriverServer.exe</Data>
    <Data>2.44.0.0</Data>
    <Data>5449666f</Data>
    <Data>IED4C2A.tmp</Data>
    <Data>0.0.0.0</Data>
    <Data>5449666b</Data>
    <Data>c0000005</Data>
    <Data>000a41e6</Data>
    <Data>f2c</Data>
    <Data>01d0e191ad6d3d19</Data>
    <Data>C:\AutomationDrivers\IEDriverServer.exe</Data>
    <Data>C:\Users\TASKBO~1\AppData\Local\Temp\IED4C2A.tmp</Data>
    <Data>fd4f5070-4d84-11e5-891b-00155d6e673e</Data>
  </EventData>
</Event>

我可以使用Visual Studio内置的测试运行器在本地运行相同的测试,而不会出现任何问题。该虚拟机具有约1.5 Gig的内存,并且在运行测试时永远不会用完一半以上的内存。 CPU保持相当低的状态。

关于要看的东西的想法不多了。任何想法/想法表示赞赏。谢谢。

最佳答案

我写了两篇文章,介绍了在显示Windows错误报告对话框时如何创建良好的故障转储。

第一篇文章基本上描述how to attach a debugger:

  • 等待显示WER对话框
  • 附加调试器(例如windbg)
  • 按下“调试”按钮
  • 确认已附加调试器的警告
  • 要求使用选定的调试器时,
  • 单击“否”
  • 现在可以在调试器中做任何您想做的事情,例如用.dump /ma seleniumcrash.dmp
  • 创建转储

    如果您不太熟悉调试器,请尝试第二篇文章activates LocalDumps just in time,即:
  • 等待显示WER对话框
  • 为崩溃的应用程序创建WER LocalDumps注册表项。确保将DumpType设置为2,并且该文件夹可写(检查NTFS权限)。
  • 关闭WER对话框

  • 一旦有了良好的故障转储,就可以从中获取更多信息,例如调用堆栈和.NET调用堆栈。

    事件查看器异常代码是0xc0000005,也就是访问冲突。 .NET中的NullReferenceException

    10-07 12:34