2

我遇到了 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,但问题仍然存在。

4

1 回答 1

2

这是一个已知的错误。我最终使用 gevent 超时来结束调用,所以如果 chromedriver 锁定,我可以简单地杀死它并重新启动它。

于 2012-05-12T02:43:10.337 回答