运行 测试 Visual Studio Team Services (VS Online) 时,ChromeDriver 和 OperaDriver 失败

ChromeDriver and OperaDriver fail when running tests on Visual Studio Team Services (VS Online)

我们使用 MSTest 和团队服务(Visual Studio 在线)构建 运行 我们的 Selenium 测试。 FirefoxDriverInternetExplorerDriver 运行 正确,但是 ChromeDriverOperaDriver 每次都失败,甚至无法打开浏览器。 他们每次都失败并显示以下堆栈跟踪:

Initialization method WebUnitTests.Tests.DatacenterTests.TestInitialize threw exception. OpenQA.Selenium.WebDriverException:
OpenQA.Selenium.WebDriverException: The HTTP request to the remote WebDriver server for URL http://localhost:1410/session timed out after 60 seconds. ---> 
System.Net.WebException: The operation has timed out.

at System.Net.HttpWebRequest.GetResponse()
at OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest request)
--- End of inner exception stack trace ---
at OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest request)
at OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command commandToExecute)
at OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command commandToExecute)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities)
at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities)
at OpenQA.Selenium.Chrome.ChromeDriver..ctor(ChromeOptions options)
at WebUnitTests.Framework.Utilities.Driver.StartBrowser(BrowserTypes browserType, Int32 defaultTimeOut) in C:\agent2\_work\s\WebUnitTests\Framework\Utilities\Driver.cs:line 37
at WebUnitTests.Framework.Utilities.BaseTests.InitializeBrowser(TestContext testContext) in C:\agent2\_work\s\WebUnitTests\Framework\Utilities\BaseTests.cs:line 328
at WebUnitTests.Framework.Utilities.BaseTests.TestInitialize() in C:\agent2\_work\s\WebUnitTests\Framework\Utilities\BaseTests.cs:line 147

我用什么来启动驱动程序:

var chromeOptions = new ChromeOptions();
chromeOptions.AddArgument("--ignore-certificate-errors");
var chromeBrowser = new ChromeDriver(chromeOptions);

需要提及的一件非常重要的事情是,如果我 运行 在我的本地机器上进行测试,一切正常,只有当它们 运行 在 [=28] 中时才会出现问题=].

关于我可以尝试找到根本问题的任何想法?有解决此问题的解决方法吗?

好吧,看来这个问题有点复杂,但我发布这个以防有人遇到同样的情况。

基本上,测试代理是作为服务安装的,从 Windows (NT) 服务启动的每个进程都在会话 0 上运行,对登录用户不可见。

Chrome 正试图离开会话 0,您可以在此处找到对此的更多参考(下面 link 中的评论 21,但实际上整个线程在尊重到这个主题): https://bugs.chromium.org/p/chromium/issues/detail?id=615396#c21

现在,要解决这个问题,有几个选项可用: 从 Chrome 下载 Canary 版本,但不推荐这样做,因为这只是临时修复。 Chrome 开发人员表示,在不久的将来,会话 0 将不再适用于 Chrome(和 Chrome 驱动程序)。

最佳解决方案是将 MS Test Agent 作为进程安装,以便所有应用程序对登录用户可见。更多详情可在这找到: https://msdn.microsoft.com/en-us/library/ee291332.aspx

另一个选择是将下面的设置添加为 Chrome 参数,但是我没有对那些使用测试代理作为 Windows 服务的设置进行测试,所以我没有知道它是否工作,但我可以确认它作为一个过程与测试代理一起工作。

var chromeOptions = new ChromeOptions();
chromeOptions.AddArguments("test-type");
chromeOptions.AddArguments("--disable-extensions");
chromeOptions.AddArguments("no-sandbox");
var driver = new ChromeDriver(chromeOptions);