2017-05-09 334 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);