首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Visual Studio Team Services (VS Online)上运行测试时ChromeDriver和OperaDriver失败

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

Stack Overflow用户
提问于 2016-08-12 00:05:02
回答 1查看 708关注 0票数 0

我们使用带有Team Services (Visual Studio Online)构建的MSTest来运行Selenium测试。FirefoxDriverInternetExplorerDriver运行正常,但ChromeDriverOperaDriver每次都失败,甚至无法打开浏览器。它们每次都会失败,并显示以下堆栈跟踪:

代码语言:javascript
复制
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

我用来启动驱动程序的东西:

代码语言:javascript
复制
var chromeOptions = new ChromeOptions();
chromeOptions.AddArgument("--ignore-certificate-errors");
var chromeBrowser = new ChromeDriver(chromeOptions);

需要提到的一件非常重要的事情是,如果我在本地机器上运行测试,那么一切都运行得很好,问题只是在CI中运行。

有什么想法我可以试着找到问题的根源吗?有没有解决这个问题的办法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-12 18:48:41

好吧,这个问题看起来有点复杂,但我在这里发布这篇文章是为了防止有人遇到同样的情况。

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

Chrome正试图离开Session 0,你可以在这里找到更多关于这方面的参考(下面链接中的注释21,但实际上整个线程都是关于这个主题的很好的读物):https://bugs.chromium.org/p/chromium/issues/detail?id=615396#c21

现在,要修复这个问题,有几个选项可用:从Chrome下载金丝雀版本,但不建议这样做,因为这只是一个临时修复。Chrome开发者表示,在不久的将来,0将不再适用于Chrome (和ChromeDriver)。

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

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

代码语言:javascript
复制
var chromeOptions = new ChromeOptions();
chromeOptions.AddArguments("test-type");
chromeOptions.AddArguments("--disable-extensions");
chromeOptions.AddArguments("no-sandbox");
var driver = new ChromeDriver(chromeOptions);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38901269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档