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