【问题标题】:Constant HTTP request timeouts for C# Selenium tests running on TFS server在 TFS 服务器上运行的 C# Selenium 测试的持续 HTTP 请求超时
【发布时间】:2014-12-18 07:07:10
【问题描述】:

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

加长版:我们找到了解决方法。启用交互模式(基本上是打开的 RDP 会话)允许执行测试。以前人们必须这样做才能获得 Selenium/etc。跑步。在 Visual Studio 2010 中,它已被修复。但似乎有些东西倒退了。我们的设置是一个 Windows VM,上面安装了 TFS 的构建控制器组件。我们的理论是阻止构建控制器与桌面交互,或者有不同的网络或安全设置阻止与 webdriver 交互。我们将向 Microsoft 开一张票,看看他们是否可以修复此回归问题。


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

我的测试连续几天完美运行,然后某些东西在服务器上发生了变化。我的 WebDriver 没有改变。仍然使用与以前相同的 ChromeDriver.exe。我的代码没有改变。据我所知,构建定义没有改变。

我们尝试过的事情:

  • 关闭可能干扰的防火墙
  • 重启服务器
  • 关闭并行测试运行
  • 回滚最近的 Windows 更新

我现在不知道还能尝试什么。想法?

我们在版本级别 2.40 上运行 .NET 绑定。 (我知道那里有 2.43.1 更新,但我怀疑它会有所帮助)。 ChromeDriver.exe 应该是最新的稳定版本;我最近查了一下。

错误信息:

测试方法 Company.BlackBoxTests.WebUI.Portal.Tests.LocationsShould.AddPlan 抛出异常:
OpenQA.Selenium.WebDriverException:对 URL http://localhost:40901/session/37a7c64c5ef189acf896ff9d3af34e67/execute 的远程 WebDriver 服务器的 HTTP 请求在 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)

【问题讨论】:

  • 网络人“修复”了什么?
  • 什么版本的 ChromeDriver + Chrome? (两者齐头并进)。
  • ChromeDriver 是 v2.9.248315。所以看起来我落后了两个版本。 Chrome 版本我还不确定。当我收到管理员的消息时会更新此评论。
  • Chrome 版本为 38.0.2125.104 m
  • 我目前正在尝试更新到 ChromeDriver 2.11 和 2.43.1 .NET Selenium 绑定,看看它是否会有所作为。

标签: c# http selenium tfs timeout


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2019-12-19
    • 2021-03-03
    • 1970-01-01
    • 2016-09-14
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    • 2022-10-23
    相关资源
    最近更新 更多