C# ChromeWebDriver崩溃
我使用的是Chrome Selenium WebDriver的C#绑定,导航到某个页面将随机失败。它是哪一个测试并不一致,但在运行整个套件时,在几个测试中确实是一致的,并且在同一页面更改上也是一致的。下面我粘贴了我用来创建驱动程序实例的代码,虽然它本身的url不是一个可公开访问的url 另一个考虑是,我使用NUnit并行运行两个测试C# ChromeWebDriver崩溃,c#,selenium,selenium-webdriver,webdriver,C#,Selenium,Selenium Webdriver,Webdriver,我使用的是Chrome Selenium WebDriver的C#绑定,导航到某个页面将随机失败。它是哪一个测试并不一致,但在运行整个套件时,在几个测试中确实是一致的,并且在同一页面更改上也是一致的。下面我粘贴了我用来创建驱动程序实例的代码,虽然它本身的url不是一个可公开访问的url 另一个考虑是,我使用NUnit并行运行两个测试 var options = new ChromeOptions(); options.AddArgument("start-maximized"); options
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);
版本
- 铬驱动2.29
- Chrome 58.0.3029.96(64位)
- Selenium.WebDriver(nuget)3.4.0
- Selenium.Support(nuget)3.4.0
ChromeDriver是32位的,Chrome是64位的。我做了一些研究,没有一个64位的ChromeDriver,我的研究表明这两个都可以工作——可能是新的bug还是什么?禁用DNS预取为我修复了所有的崩溃。我不是百分之百的知道它试图做什么导致页面崩溃,也许它与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);