我在使用 Selenium WebDriver、Microsoft Team Foundation Server、NUnit 和 Chrome/ChromeDriver 时遇到问题。我希望也许有人可以提供一些见解或指出我进行调查的方向。现在我在这个问题上遇到了困难。
问题详情-
我发现当我们的自动构建过程 (Microsoft Team Foundation Server) 使用 Google Chrome 作为测试浏览器调用测试时,我的 selenium 测试自动化挂起。本质上,TFS 通过 MSBuild 构建,然后调用 NUnit,后者依次执行我的 Selenium 测试。我可以在 Windows 任务管理器(以及构建日志)中看到 nunit-console、nunit-agent、Google Chrome 和 ChromeDriver 进程已启动,但随后这些进程似乎只是挂起。
同样,只有在使用 Google Chrome 作为测试浏览器在我们的构建机器上自动启动测试时,这才会重现。我确认运行 TFS 的帐户是管理员,当我使用 Firefox 作为我们的自动化运行/构建过程的浏览器时,这个问题不会自行显现。
我在代码中写了一堆调试语句并设法将挂起范围缩小到如下行:
IWebElement element =driver.FindElement(By.XPath(strXpath));
上述语句的 strXpath 值是这样的:
//ul[contains(@class,'topnew')]
我已经尝试更改 By 选择器以搜索具有 css 类或 Id 的元素,但我仍然看到问题:
element = driver.FindElement(By.ClassName("topnew"));
这是 ChromeDriver 日志中的最后几条语句:
[157.979][FINER]: Waiting for all views to stop loading...
[216.963][FINE]: Command received (/session/43fb268cae9e2131577d6fdddedb5c7f/refresh
[216.963][FINER]: Waiting for all views to stop loading..
这是在我们构建机器上运行的软件-
Selenium version 2.18.0.0 (I have also tried 2.14.0.0) using the .Net binaries (the tests are written in C#)
Nunit version 2.5.9.10348
Windows Server 2008 R2
Chrome version 16.0.912.77
ChromeDriver.exe version 18.0.995.0 (windows version)
Microsoft Team Foundation Server 2010 – version 10.0.30319
作为解决方法,我尝试让 MSBuild 调用一个 powershell 脚本,然后调用 NUnit,但问题仍然存在。
最佳答案
这是一个已知的 bug .我最终使用 gevent 超时包装了调用,因此如果 chromedriver 锁定,我可以简单地杀死它并重新启动它。
关于google-chrome - 使用 TFS/NUnit 通过构建过程执行时,使用 Google Chrome 的 WebDriver 测试挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9221095/