private static object getSafariCapabilities_() { SafariOptions options = new SafariOptions(); ICapabilities cpabilities = options.ToCapabilities(); return(cpabilities); }
private static ICapabilities ReturnBrowserOptions(string platformName, string browserName, string browserVersion) { DriverOptions browserOptions; switch (browserName) { case "chrome": browserOptions = new ChromeOptions(); break; case "edge": browserOptions = new EdgeOptions(); break; case "firefox": browserOptions = new FirefoxOptions(); break; case "safari": browserOptions = new SafariOptions(); break; default: throw new Exception($"Browser {browserName} not supported!"); } browserOptions.PlatformName = platformName; browserOptions.BrowserVersion = browserVersion; return(browserOptions.ToCapabilities()); }
private IWebDriver GetRemoteBrowser(BrowserType browser, string version = null, DriverOptions options = null, LogLevel logLevel = LogLevel.Severe) { var gridAddress = new Uri($"{WebDriverSettings.SeleniumGridServer}/wd/hub"); Log.Debug($"EXECUTING: GetRemoteBrowser(): {gridAddress.AbsoluteUri},{browser},{(!string.IsNullOrEmpty(version) ? version : string.Empty)},{(options != null ? options.GetType().Name : string.Empty)},{logLevel}"); ICapabilities capabillities; SetupDriverOptions(browser, options, logLevel); switch (browser) { case BrowserType.Chrome: capabillities = _chromeOpts.ToCapabilities(); break; case BrowserType.Edge: capabillities = _edgeOpts.ToCapabilities(); break; case BrowserType.Firefox: capabillities = _firefoxOpts.ToCapabilities(); break; case BrowserType.IE: _ieOpts.AddAdditionalCapability("version", !string.IsNullOrEmpty(version) ? version : "11"); capabillities = _ieOpts.ToCapabilities(); break; case BrowserType.Phantomjs: capabillities = _phantomJsOpts.ToCapabilities(); break; case BrowserType.Safari: capabillities = _safariOpts.ToCapabilities(); break; default: throw new Exception($"Unsupported BrowserType={browser}"); } try { return(new RemoteWebDriver(gridAddress, capabillities)); } catch (Exception e) { if (e is WebDriverTimeoutException || e is WebDriverException) { var msg = $"Unable to connect to Selenium Grid: {gridAddress}, {e.Message}"; throw new Exception(msg, e); } throw new Exception($"An exception has occurred: {e.Message}", e); } }
public void ShouldOpenOnSafari() { // Set your sauce user name and access key from environment variables var sauceUserName = Environment.GetEnvironmentVariable("SAUCE_USERNAME", EnvironmentVariableTarget.User); var sauceAccessKey = Environment.GetEnvironmentVariable("SAUCE_ACCESS_KEY", EnvironmentVariableTarget.User); //configure sauce labs options var sauceOptions = new Dictionary <string, object> { ["username"] = sauceUserName, ["accessKey"] = sauceAccessKey, ["name"] = MethodBase.GetCurrentMethod().Name }; //configure the browser options var safariOptions = new SafariOptions { BrowserVersion = "latest", PlatformName = "macOS 10.15", //AcceptInsecureCertificates = true Don't use this as Safari doesn't support Insecure certs }; //merge sauce options with browser options safariOptions.AddAdditionalCapability("sauce:options", sauceOptions); //It's not a good idea to set this value too high because if something goes wrong, // the test will just hang for this amount of time. 60 sec is plenty var connectionTimeout = TimeSpan.FromSeconds(60); _driver = new RemoteWebDriver(new Uri("https://ondemand.saucelabs.com/wd/hub"), safariOptions.ToCapabilities(), connectionTimeout); //navigate to the url of the Sauce Labs Sample app _driver.Navigate().GoToUrl("https://www.saucedemo.com"); //Create an instance of a Selenium explicit wait so that we can dynamically wait for an element var wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(5)); //wait for the user name field to be visible and store that element into a variable var userNameField = wait.Until(ExpectedConditions.ElementIsVisible(By.CssSelector("[type='text']"))); //type the user name string into the user name field userNameField.SendKeys("standard_user"); //type the password into the password field _driver.FindElement(By.CssSelector("[type='password']")).SendKeys("secret_sauce"); //hit Login button _driver.FindElement(By.CssSelector("[type='submit']")).Click(); //Synchronize on the next page and make sure it loads var inventoryPageLocator = wait.Until(ExpectedConditions.ElementIsVisible(By.Id("inventory_container"))); //Assert that the inventory page displayed appropriately Assert.IsTrue(inventoryPageLocator.Displayed); }
/// <summary> /// Get the remote desired capability /// </summary> /// <returns>The remote desired capability</returns> private static ICapabilities GetRemoteCapabilities() { DriverOptions options = null; string remoteBrowser = GetRemoteBrowserName(); string remotePlatform = GetRemotePlatform(); string remoteBrowserVersion = GetRemoteBrowserVersion(); switch (remoteBrowser.ToUpper()) { case "INTERNET EXPLORER": case "INTERNETEXPLORER": case "IE": options = new InternetExplorerOptions(); break; case "FIREFOX": options = new FirefoxOptions(); break; case "CHROME": options = new ChromeOptions(); break; case "EDGE": options = new EdgeOptions(); break; case "SAFARI": options = new SafariOptions(); break; default: throw new ArgumentException(StringProcessor.SafeFormatter("Remote browser type '{0}' is not supported", remoteBrowser)); } // Add a platform setting if one was provided if (remotePlatform.Length > 0) { options.AddAdditionalCapability("platform", remotePlatform); } // Add a remote browser setting if one was provided if (remoteBrowserVersion.Length > 0) { options.AddAdditionalCapability("version", remoteBrowserVersion); } // Add RemoteCapabilites section if it exists options.SetDriverOptions(); return(options.ToCapabilities()); }
private static IWebDriver CreateDesktopWebDriver() { DesiredCapabilities capabilities; var browser = Config.Settings.BrowserStackSettings.BsBrowser; switch (browser) { case "Chrome": var chromeOptions = new ChromeOptions(); chromeOptions.AddArguments("--disable-popup-blocking"); capabilities = chromeOptions.ToCapabilities() as DesiredCapabilities; SetCapabilities(capabilities, "Chrome"); return(CreateRemoteWebDriver(capabilities)); case "Firefox": FirefoxOptions firefoxOptions = new FirefoxOptions(); capabilities = firefoxOptions.ToCapabilities() as DesiredCapabilities; SetCapabilities(capabilities, "Firefox"); return(CreateRemoteWebDriver(capabilities)); case "IE": InternetExplorerOptions ieOptions = new InternetExplorerOptions(); capabilities = ieOptions.ToCapabilities() as DesiredCapabilities; capabilities.SetCapability("browserstack.ie.enablePopups", "true"); SetCapabilities(capabilities, "IE"); return(CreateRemoteWebDriver(capabilities)); case "Edge": var edgeOptions = new EdgeOptions(); edgeOptions.PageLoadStrategy = PageLoadStrategy.Eager; capabilities = edgeOptions.ToCapabilities() as DesiredCapabilities; SetCapabilities(capabilities, "Edge"); return(CreateRemoteWebDriver(capabilities)); case "Safari": SafariOptions safariOptions = new SafariOptions(); capabilities = safariOptions.ToCapabilities() as DesiredCapabilities; capabilities.SetCapability("browserstack.safari.enablePopups", "true"); SetCapabilities(capabilities, "Safari"); return(CreateRemoteWebDriver(capabilities)); case "Opera": OperaOptions operaOptions = new OperaOptions(); capabilities = operaOptions.ToCapabilities() as DesiredCapabilities; SetCapabilities(capabilities, "Opera"); return(CreateRemoteWebDriver(capabilities)); default: throw new ArgumentOutOfRangeException("'Browser' value: " + browser); } }
public void SafariW3C() { SafariOptions safariOptions = new SafariOptions { BrowserVersion = "12.0", PlatformName = "macOS 10.13" //AcceptInsecureCertificates = true Don't use this as Safari doesn't support Insecure certs }; sauceOptions.Add("name", MethodBase.GetCurrentMethod().Name); safariOptions.AddAdditionalOption("sauce:options", sauceOptions); _driver = new RemoteWebDriver(new Uri("https://ondemand.saucelabs.com/wd/hub"), safariOptions.ToCapabilities(), TimeSpan.FromSeconds(30)); GoToThenAssert(); }
public void SafariDriverTest() { var options = new SafariOptions(); options.AddAdditionalCapability(CapabilityType.Version, "latest"); options.AddAdditionalCapability(CapabilityType.Platform, "macOS 10.13"); options.AddAdditionalCapability("username", sauceUserName); options.AddAdditionalCapability("accessKey", sauceAccessKey); using (var driver = new RemoteWebDriver(RemoteAddress, options.ToCapabilities(), CommandTimeout)) { //driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30); //driver.Manage().Timeouts().AsynchronousJavaScript = TimeSpan.FromSeconds(10); driver.Navigate().GoToUrl("https://login.live.com"); } }
public void SafariW3C() { var safariOptions = new SafariOptions { BrowserVersion = "latest", PlatformName = "macOS 10.15" //AcceptInsecureCertificates = true Don't use this as Safari doesn't support Insecure certs }; _sauceOptions.Add("name", TestContext.CurrentContext.Test.Name); safariOptions.AddAdditionalCapability("sauce:options", _sauceOptions); _driver = new RemoteWebDriver(new Uri("https://ondemand.saucelabs.com/wd/hub"), safariOptions.ToCapabilities(), TimeSpan.FromSeconds(600)); _driver.Navigate().GoToUrl("https://www.saucedemo.com"); Assert.Pass(); }
public void Setup() { _sauceUserName = Environment.GetEnvironmentVariable("SAUCE_USERNAME", EnvironmentVariableTarget.User); _sauceAccessKey = Environment.GetEnvironmentVariable("SAUCE_ACCESS_KEY", EnvironmentVariableTarget.User); _sauceOptions = new Dictionary <string, object> { ["username"] = _sauceUserName, ["accessKey"] = _sauceAccessKey, ["deviceName"] = "iPhone XS Max Simulator", ["platformVersion"] = "13.0" }; var options = new SafariOptions { BrowserVersion = "latest", PlatformName = "iOS" }; _sauceOptions.Add("name", MethodBase.GetCurrentMethod().Name); options.AddAdditionalCapability("sauce:options", _sauceOptions); _driver = new RemoteWebDriver(new Uri("https://ondemand.saucelabs.com/wd/hub"), options.ToCapabilities(), TimeSpan.FromSeconds(30)); }
protected void SetUpDriver(browserType browser = browserType.Chrome, bool legacy = false, bool headless = false) { switch (browser) { case browserType.Chrome: driver = CreateChromeDriver(headless: headless); break; case browserType.Firefox: driver = CreateFirefoxDriver(headless: headless); break; case browserType.IE: var sauceOptions = new Dictionary <string, object>(); sauceOptions.Add("username", SAUCE_USERNAME); sauceOptions.Add("accesskey", SAUCE_ACCESS_KEY); var browserOptionsIE = new InternetExplorerOptions(); browserOptionsIE.PlatformName = "Windows 10"; browserOptionsIE.BrowserVersion = "11.285"; browserOptionsIE.AddAdditionalCapability("sauce:options", sauceOptions, true); driver = new RemoteWebDriver(new Uri(SAUCE_SELENIUM_URL), browserOptionsIE.ToCapabilities(), TimeSpan.FromMinutes(4)); break; case browserType.Edge: var sauceOptionsEdge = new Dictionary <string, object>(); sauceOptionsEdge.Add("username", SAUCE_USERNAME); sauceOptionsEdge.Add("accesskey", SAUCE_ACCESS_KEY); var browserOptionsEdge = new EdgeOptions(); browserOptionsEdge.PlatformName = "Windows 10"; browserOptionsEdge.BrowserVersion = "18.17763"; browserOptionsEdge.AddAdditionalCapability("sauce:options", sauceOptionsEdge); driver = new RemoteWebDriver(new Uri(SAUCE_SELENIUM_URL), browserOptionsEdge.ToCapabilities(), TimeSpan.FromMinutes(4)); break; case browserType.Safari11: if (legacy) { setDesiredCapabilities("macOS 10.12", "Safari", "11.0"); driver = new RemoteWebDriver(new Uri(SAUCE_SELENIUM_URL), caps, TimeSpan.FromMinutes(4)); } else { browserOptions = new SafariOptions(); setDriverOptions(ref browserOptions, "macOS 10.12", "11.0"); driver = new RemoteWebDriver(new Uri(SAUCE_SELENIUM_URL), browserOptions.ToCapabilities(), TimeSpan.FromMinutes(4)); } break; case browserType.Safari12: if (legacy) { setDesiredCapabilities("macOS 10.13", "Safari", "12.1"); driver = new RemoteWebDriver(new Uri(SAUCE_SELENIUM_URL), caps, TimeSpan.FromMinutes(4)); } else { browserOptions = new SafariOptions(); setDriverOptions(ref browserOptions, "macOS 10.13", "12.1"); driver = new RemoteWebDriver(new Uri(SAUCE_SELENIUM_URL), browserOptions.ToCapabilities(), TimeSpan.FromMinutes(4)); } break; default: throw new Exception("Unknown browser type"); } }
public IWebDriver GetWebDriver(Preferences preferences) { switch (preferences.BrowserName.ToUpper()) { case "IE": { InternetExplorerOptions ieOptions = new InternetExplorerOptions { EnsureCleanSession = true, IgnoreZoomLevel = true }; ieOptions.SetLoggingPreference(LogType.Browser, LogLevel.All); return(new InternetExplorerDriver(ieOptions)); } case "CHROME": { SafariOptions options = new SafariOptions(); //ChromeOptions options = new ChromeOptions(); //options.SetLoggingPreference(LogType.Browser, preferences.BrowserConsoleLog ? LogLevel.All : LogLevel.Off); return(preferences.RemoteDriver ? new RemoteWebDriver(new Uri("http://10.217.34.66:4444/wd/hub"), options.ToCapabilities()) : new SafariDriver(options)); } case "FIREFOX": { return(new FirefoxDriver()); } default: { throw new Exception("Invalid Browser Selected"); } } }
public IBrowserDriver Create(BrowserNames browserName) { var mode = (configuration?.WebDriver?.Mode ?? "").ToEnum <Modes>(); Log.Info($"Browser mode:{mode}"); switch (mode) { case Modes.browser: var isRemote = configuration?.WebDriver?.Browser?.IsRemote ?? false; Log.Info($"WebDriver.IsRemote = {isRemote}"); if (isRemote) { switch (browserName) { case BrowserNames.chrome: { ChromeOptions chromeOptions = BuildChromeOptions(); return(CreateRemoteWebDriver(chromeOptions.ToCapabilities())); } case BrowserNames.firefox: { FirefoxOptions firefoxOptions = BuildFirefoxOptions(); return(CreateRemoteWebDriver(firefoxOptions.ToCapabilities())); } case BrowserNames.opera: { OperaOptions operaOptions = BuildOperaOptions(); return(CreateRemoteWebDriver(operaOptions.ToCapabilities())); } case BrowserNames.safari: { SafariOptions safariOptions = BuildSafariOptions(); return(CreateRemoteWebDriver(safariOptions.ToCapabilities())); } case BrowserNames.ie: { InternetExplorerOptions ieOptions = BuildInternetExplorerOptions(); return(CreateRemoteWebDriver(ieOptions.ToCapabilities())); } case BrowserNames.edge: { EdgeOptions edgeOptions = BuildEdgeOptions(); return(CreateRemoteWebDriver(edgeOptions.ToCapabilities())); } default: throw new ArgumentOutOfRangeException($"SpecDrill: Value Not Supported `{browserName}`!"); } } return(driverFactory[browserName]()); case Modes.appium: AppiumOptions appiumOptions = new AppiumOptions(); var configuredCapabilities = configuration?.WebDriver?.Appium?.Capabilities; ExtendCapabilities(appiumOptions, configuredCapabilities); IWebDriver driver; const string PLATFORM_NAME = "platformName"; EnsureCapabilityIsConfigured(configuredCapabilities, PLATFORM_NAME); var appiumServerUri = configuration?.WebDriver?.Appium?.ServerUri ?? ""; switch (configuredCapabilities ![PLATFORM_NAME].ToString().ToEnum <PlatformNames>())
private IWebDriver DoCreate(string key) { switch (key) { case "Firefox": var firefoxOptions = new FirefoxOptions { AcceptInsecureCertificates = true }; return(new FirefoxDriver(firefoxOptions)); case "Internet Explorer": case "IE": var ieOptions = new InternetExplorerOptions { IntroduceInstabilityByIgnoringProtectedModeSettings = true }; return(new InternetExplorerDriver(ieOptions)); case "Chrome": var chromeOptions = new ChromeOptions(); chromeOptions.AddUserProfilePreference("download.default_directory", TestingConstants.DownloadFilePath); if (!Directory.Exists(TestingConstants.DownloadFilePath)) { Directory.CreateDirectory(TestingConstants.DownloadFilePath); } chromeOptions.AddExcludedArgument("ignore-certificate-errors"); chromeOptions.AddUserProfilePreference("credentials_enable_service", false); chromeOptions.AddUserProfilePreference("profile.password_manager_enabled", false); return(new ChromeDriver(chromeOptions)); case "Safari": var options = new SafariOptions(); options.AddAdditionalCapability(CapabilityType.BrowserName, "safari"); options.AddAdditionalCapability(CapabilityType.PlatformName, "MAC"); options.AddAdditionalCapability(CapabilityType.Version, "12"); options.AddAdditionalCapability(CapabilityType.AcceptSslCertificates, true); options.AddAdditionalCapability(CapabilityType.IsJavaScriptEnabled, true); var capabilities = options.ToCapabilities(); var driver = new RemoteWebDriver(new Uri(Settings.RemoteServerAddress), capabilities, TimeSpan.FromSeconds(120)); driver.Manage().Timeouts().ImplicitWait = Settings.PageTimeout; return(driver); case "ChromeOnAndroid": var androidCaps = new DesiredCapabilities(); androidCaps.SetCapability("platformName", "Android"); androidCaps.SetCapability("deviceName", Settings.DeviceName); androidCaps.SetCapability("browserName", MobileBrowserType.Chrome); androidCaps.SetCapability("timeouts", -1); androidCaps.SetCapability("download.prompt_for_download", false); // Dismiss the keyboard on the Android device androidCaps.SetCapability("unicodeKeyboard", true); androidCaps.SetCapability("resetKeyboard", true); androidCaps.SetCapability("clearSystemFiles", true); var androidDriver = new RemoteWebDriver(new Uri(Settings.RemoteServerAddress), androidCaps); androidDriver.Manage().Timeouts().ImplicitWait = Settings.PageTimeout; return(androidDriver); } throw new ArgumentException(@"Invalid browser key", nameof(key)); }