TFS服务器上运行的C#Selenium测试的持续HTTP请求超时

TFS服务器上运行的C#Selenium测试的持续HTTP请求超时,c#,http,selenium,tfs,timeout,C#,Http,Selenium,Tfs,Timeout,更新2014-10-23:tl;dr:打开交互模式/交互登录 更长的版本:我们找到了一个解决方法。启用交互模式(基本上是一个开放的RDP会话)允许执行测试。以前,人们必须这样做才能运行Selenium/etc。在VisualStudio2010中,它已修复。但似乎有些东西已经倒退了。我们的安装程序是一个Windows VM,上面安装了TFS的生成控制器组件。我们的理论是阻止构建控制器与桌面交互的原因,或者存在阻止与webdriver交互的不同网络或安全设置。我们将向微软开出一张罚单,看看他们是否

更新2014-10-23:tl;dr:打开交互模式/交互登录

更长的版本:我们找到了一个解决方法。启用交互模式(基本上是一个开放的RDP会话)允许执行测试。以前,人们必须这样做才能运行Selenium/etc。在VisualStudio2010中,它已修复。但似乎有些东西已经倒退了。我们的安装程序是一个Windows VM,上面安装了TFS的生成控制器组件。我们的理论是阻止构建控制器与桌面交互的原因,或者存在阻止与webdriver交互的不同网络或安全设置。我们将向微软开出一张罚单,看看他们是否能解决这个问题


我知道间歇性出现这种超时的问题。这不是问题所在。对于所有Selenium操作(单击、查找元素等),我都会得到100%的超时

我的测试连续几天都在完美运行,然后服务器上发生了一些变化。我的网络驱动程序没有改变。仍然使用与以前相同的ChromeDriver.exe。我的密码没有变。据我所知,构建定义没有改变

我们尝试过的事情:

  • 关闭可能干扰的防火墙
  • 重新启动服务器
  • 关闭并行测试运行
  • 回滚最近的Windows更新
我不知道在这一点上还有什么可以尝试的。想法

我们正在运行版本级别为2.40的.NET绑定。(我知道有一个2.43.1的更新,但我怀疑它会有帮助)。ChromeDriver.exe应为最新稳定版本;我最近查过了

错误消息:

测试方法Company.BlackBoxTests.WebUI.Portal.Tests.LocationsShould.AddPlan引发异常:
OpenQA.Selenium.WebDriverException:对远程WebDriver服务器的URL
HTTP请求http://localhost:40901/session/37a7c64c5ef189acf896ff9d3af34e67/execute
60秒后超时。-->System.Net.WebException:操作已超时

错误堆栈跟踪:

System.Net.HttpWebRequest.GetResponse()
OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest request)
OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest request)
OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command commandToExecute)
OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command commandToExecute)
OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
OpenQA.Selenium.Remote.RemoteWebDriver.ExecuteScriptCommand(String script, String commandName, Object[] args)
OpenQA.Selenium.Remote.RemoteWebDriver.ExecuteScript(String script, Object[] args)
Company.BlackBoxTests.WebUI.Portal.PageObjects.BasePage.WaitForAjax(IWebDriver driver, String action, Boolean longWait)

正如您所说:启用交互模式(基本上是一个开放的RDP会话)就是允许执行测试

另一种解决方案:如果将TFS代理作为服务运行,请确保选中“允许服务与桌面交互”

如果您的应用程序不能作为本地系统帐户运行,这可能不起作用。在这种情况下,您不能将代理作为服务运行;您只能在交互模式下运行它。不过,到目前为止,我通过这种方式获得了良好的服务效果


注意,我也必须这样做:在启动ChromeDriver时添加“no sandbox”标志

网络人员“修复”了什么吗?ChromeDriver+Chrome的哪个版本?(二者相辅相成)。ChromeDriver是v2.9.248315。看来我落后了两个版本。Chrome版本我还不确定。当我从管理员那里听说Chrome版本是38.0.2125.104 mI时,我会更新这个评论。我目前正在尝试更新ChromeDriver 2.11和2.43.1.NET Selenium绑定,看看它是否会有任何不同。