Another post so I don’t forget how I fixed a problem….
I have been making sure some Selenium UX tests that were originally written against Chrome also work with other browsers. I have had a few problems, the browser under test failing to load or Selenium not being able to find elements.
Turns out the solution is to just use the custom driver start-up options, the default constructors don’t seem to work for browsers other theran Chrome and Firefox.
Hence, I not have helper method that creates a driver from me based the a configuration parameter
internal static IWebDriver GetWebDriver()
{
var driverName = GetWebConfigSetting("webdriver");
switch (driverName)
{
case "Chrome":
return new ChromeDriver();
case "Firefox":
return new FirefoxDriver();
case "IE":
InternetExplorerOptions caps = new InternetExplorerOptions();
caps.IgnoreZoomLevel = true;
caps.EnableNativeEvents = false;
caps.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
caps.EnablePersistentHover = true;
return new InternetExplorerDriver(caps);
case "Edge-Chromium":
var service = EdgeDriverService.CreateDefaultService(Directory.GetCurrentDirectory(), "msedgedriver.exe");
return new EdgeDriver(service);
default:
throw new ConfigurationErrorsException($"{driverName} is not a known Selenium WebDriver");
}
}