运行 测试 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 测试。
FirefoxDriver
和 InternetExplorerDriver
运行 正确,但是 ChromeDriver
和 OperaDriver
每次都失败,甚至无法打开浏览器。
他们每次都失败并显示以下堆栈跟踪:
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);
我们使用 MSTest
和团队服务(Visual Studio 在线)构建 运行 我们的 Selenium 测试。
FirefoxDriver
和 InternetExplorerDriver
运行 正确,但是 ChromeDriver
和 OperaDriver
每次都失败,甚至无法打开浏览器。
他们每次都失败并显示以下堆栈跟踪:
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);