在Visual Studio中将selenium更新为3.0,将Firefox更新为47.0,现在当我尝试使用本地webdriver模式时出现此错误:geckodriver.exe文件在当前目录中或PATH环境变量的目录中不存在。
当我使用远程模式(seleniumhub)时,即使它使用了firefox 45.0版本,它也能正常工作。
试图搜索一些示例,但没有找到任何针对c#的内容,仅针对Java,并且仍然无法使其正常工作。
我的网络驱动程序设置:
switch (ConfigurationManager.AppSettings["WebDriverMode"].ToLower()) { case "local": switch (ConfigurationManager.AppSettings["WebDriverBrowserCapabilities"].ToLower()) { case "firefox": driver = new AdvancedFirefoxDriver(); break; case "ie": driver = new AdvancedInternetExplorerDriver(); break; case "chrome": driver = new AdvancedChromeDriver(); break; default: throw new NotImplementedException(string.Format("WebDriverBrowserCapabilities of \"{0}\" is not implemented for {1} mode", ConfigurationManager.AppSettings["WebDriverBrowserCapabilities"].ToLower(), ConfigurationManager.AppSettings["WebDriverMode"].ToLower())); } break; case "remote": var huburl = new Uri(ConfigurationManager.AppSettings["SeleniumHubAddress"]); DesiredCapabilities capabilities; switch (ConfigurationManager.AppSettings["WebDriverBrowserCapabilities"].ToLower()) { case "firefox": capabilities = DesiredCapabilities.Firefox(); break; case "ie": capabilities = DesiredCapabilities.InternetExplorer(); break; case "chrome": capabilities = DesiredCapabilities.Chrome(); break; default: throw new NotImplementedException(string.Format("WebDriverBrowserCapabilities of \"{0}\" is not implemented for {1} mode", ConfigurationManager.AppSettings["WebDriverBrowserCapabilities"].ToLower(), ConfigurationManager.AppSettings["WebDriverMode"].ToLower())); } capabilities.IsJavaScriptEnabled = true; driver = new AdvancedRemoteWebDriver(huburl, capabilities); break; default: throw new NotImplementedException(); }
从selenium 3.0开始,您必须使用geckodriverFirefox浏览器。
geckodriver
从此处https://github.com/mozilla/geckodriver/releases下载最新的geckodriver
您有两种选择:
PATH
System.Environment.SetEnvironmentVariable("webdriver.gecko.driver",@"/path/to/geckodriver.exe"
注意: 如果设置PATH环境变量,则可能需要重新启动系统。
从Firefox 47起(不包括Firefox),Selenium默认使用geckodriver功能。对于47及以后的版本,您可能需要关闭此功能,以便Selenium可以像以前使用这些版本一样使用Firefox内置支持。
JAVA版本实现相同:
DesiredCapabilities d = new DesiredCapabilities(); d.setCapability("marionette", false); // to disable marionette. WebDriver driver = new FirefoxDriver(d);
参考文献: 1. https://msdn.microsoft.com/zh-CN/library/z46c489x.aspx 2. https://superuser.com/questions/317631/setting-path-in-windows-7-command-prompt