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);