2017-05-09 332 views
0

我正在使用Chrome Selenium WebDriver的C#綁定,並導航到頁面將隨機失敗。測試它並不一致,但是在整個套件運行時會在多個測試中持續發生,並且在相同的頁面更改上保持一致。下面我粘貼了我用來創建驅動程序實例的代碼,但它自身的url不是可公開訪問的URL。Chrome WebDriver崩潰

另一個考慮是我使用NUnit並行運行兩個測試。

var options = new ChromeOptions(); 
options.AddArgument("start-maximized"); 
options.AddArgument("disable-infobars"); 
options.AddArgument("--incognito"); 
options.AddUserProfilePreference("credentials_enable_service", false); 
options.AddUserProfilePreference("profile.password_manager_enabled", false); 
options.SetLoggingPreference(LogType.Browser, LogLevel.All); 
options.SetLoggingPreference(LogType.Driver, LogLevel.All); 
options.SetLoggingPreference(LogType.Client, LogLevel.All); 
options.SetLoggingPreference(LogType.Server, LogLevel.All); 
options.SetLoggingPreference(LogType.Profiler, LogLevel.All); 

var driver = new ChromeDriver(DriverPathOnSystem, options); 
driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(60); 
driver.Navigate().GoToUrl(url); 

版本

  • ChromeDriver 2.29
  • 鉻58.0.3029.96(64位)
  • Selenium.WebDriver(的NuGet)3.4.0
  • Selenium.Support(的NuGet) 3.4.0

編輯#1: ChromeDriver是32位,Chrome是64位。我做了一些研究,似乎沒有一款64位的ChromeDriver,我的研究表示這兩種方法都行得通 - 它可能是一個新的bug或者其他什麼東西?

回答

0

禁用DNS預取爲我解決了所有的崩潰問題。我不是100%它試圖做的事情導致頁面崩潰,也許它與npm有關?無論哪種方式,這是一個非常簡單的修復:

var options = new ChromeOptions(); 
options.AddArgument("start-maximized"); 
options.AddArgument("disable-infobars"); 
options.AddArgument("--incognito"); 
options.AddUserProfilePreference("credentials_enable_service", false); 
options.AddUserProfilePreference("profile.password_manager_enabled", false); 
options.AddArgument("--dns-prefetch-disable"); 

var driver = new ChromeDriver(DriverPathOnSystem, options); 
driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(60); 
driver.Navigate().GoToUrl(url);