0

我们使用MSTest与Team服务(Visual Studio的在线)建立来运行我们的Selenium测试Visual Studio团队服务(VS在线)运行测试时失败。 FirefoxDriverInternetExplorerDriver正在正常运行,但是ChromeDriverOperaDriver是失败每次,甚至没有能够打开浏览器。 他们用下面的堆栈跟踪每次失败: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\1\s\WebUnitTests\Framework\Utilities\Driver.cs:line 37 
at WebUnitTests.Framework.Utilities.BaseTests.InitializeBrowser(TestContext testContext) in C:\agent2\_work\1\s\WebUnitTests\Framework\Utilities\BaseTests.cs:line 328 
at WebUnitTests.Framework.Utilities.BaseTests.TestInitialize() in C:\agent2\_work\1\s\WebUnitTests\Framework\Utilities\BaseTests.cs:line 147 

什么我使用启动驱动程序:提

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

一个非常重要的事情是,如果我跑在我的测试本地机器一切正常,只有当它们在CI中运行时才会出现问题。

任何想法,我可以尝试找到根问题?任何解决方法来解决这个问题?

+0

您是否将构建/测试代理配置为以交互模式运行?如果您手动在构建/测试代理上运行测试,它会成功运行吗? –

回答

1

好吧,看来这个问题比较复杂一点,但我张贴这种情况下有人在同样的情况。

基本上测试代理安装为服务,每一个从Windows(NT)服务启动的进程对会话0中运行,看不到一个登录的用户。

Chrome正在试图从会话0移开,你可以找到的这个进一步的引用,在这里(在下面的链接评论21,但实际上整个主题是关于这一主题的好读): https://bugs.chromium.org/p/chromium/issues/detail?id=615396#c21

现在,为了解决这个问题,有几种方案可供选择: 从Chrome下载金丝雀构建,但不建议这样做,因为这只是一个临时的解决办法。 Chrome开发人员表示,在不久的将来,Session 0将不再适用于Chrome(和ChromeDriver)。

最好的解决办法是有一个过程中安装MS测试代理,使所有应用程序都登录的用户可见。更多详细信息可以在这里找到: 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);