Beispiel #1
0
        /// <summary>
        /// Checks the errors.
        /// </summary>
        /// <param name="url">The URL.</param>
        /// <exception cref="System.ApplicationException"></exception>
        private static void CheckErrors(string url)
        {
            FirefoxProfile      profile      = new FirefoxProfile();
            DesiredCapabilities capabilities = DesiredCapabilities.Firefox();

            profile.SetPreference("toolkit.startup.max_resumed_crashes", "-1");

            capabilities.SetCapability(FirefoxDriver.ProfileCapabilityName, profile.ToBase64String());

            JavaScriptError.AddExtension(profile);
            IWebDriver driver = new FirefoxDriver(profile);

            driver.Manage().Cookies.DeleteAllCookies();
            driver.Navigate().Refresh();
            driver.Manage().Window.Maximize();
            driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(30));

            driver.Url = url;
            Console.WriteLine("Analysing errors...");
            IList <JavaScriptError> clientSideErrors = JavaScriptError.ReadErrors(driver);

            driver.Quit();

            if (clientSideErrors.Any())
            {
                foreach (JavaScriptError error in clientSideErrors)
                {
                    Console.WriteLine(error);
                }
                throw new ApplicationException($"There are {clientSideErrors.Count()} javascript errors. ");
            }
            Console.WriteLine("No errors found. ");
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="FirefoxDriverFactory"/> class.
        /// </summary>
        public FirefoxDriverFactory()
        {
            profile.SetPreference("toolkit.startup.max_resumed_crashes", "-1");

            profile.AddExtension(PluginPath);

            capabilities.SetCapability(FirefoxDriver.ProfileCapabilityName, profile.ToBase64String());
            capabilities.SetCapability("marionette", true);
        }
Beispiel #3
0
        public IWebDriver CreateWebDriver()
        {
            var browser = Config.Settings.RuntimeSettings.SeleniumBrowser;

            switch (browser)
            {
            case BrowserType.Chrome:
                var chromeOptions = new ChromeOptions();
                chromeOptions.AddArgument("--lang=" + Config.Settings.RuntimeSettings.BrowserLanguage);
                chromeOptions.AddArgument("--start-maximized");
                chromeOptions.AddArguments("--disable-popup-blocking");
                return(CreateRemoteWebDriver(chromeOptions.ToCapabilities()));

            case BrowserType.Firefox:
                var firefoxProfile = new FirefoxProfile();
                var firefoxOptions = new FirefoxOptions();
                firefoxProfile.SetPreference("intl.accept_languages", Config.Settings.RuntimeSettings.BrowserLanguage);
                firefoxProfile.ToBase64String();
                firefoxOptions.Profile = firefoxProfile;
                return(CreateRemoteWebDriver(firefoxOptions.ToCapabilities()));

            case BrowserType.Ie:
                var ieOptions = new InternetExplorerOptions()
                {
                    IgnoreZoomLevel          = true,
                    EnableNativeEvents       = false,
                    EnableFullPageScreenshot = true
                };

                ieOptions.AddAdditionalCapability("disable-popup-blocking", true);

                var browserVersion = Config.Settings.RuntimeSettings.BrowserVersion;
                if (browserVersion != null)
                {
                    ieOptions.AddAdditionalCapability(CapabilityType.Version, int.Parse(browserVersion), true);


                    return(CreateRemoteWebDriver(ieOptions.ToCapabilities()));
                }
                return(CreateRemoteWebDriver(ieOptions.ToCapabilities()));

            case BrowserType.Safari:
                throw new NotImplementedException("Remote WebDriver Safari is not implemented");

            case BrowserType.Edge:
                throw new NotImplementedException("Remote WebDriver Edge is not implemented");

            default:
                throw new InvalidEnumArgumentException($"Invalid BrowserType specified {browser}.");
            }
        }
Beispiel #4
0
        static private IBrowserSession CreateRemoteFirefoxAdapter(RemoteBrowserSettings settings)
        {
            var profile = new FirefoxProfile();

            profile.SetPreference("dom.max_chrome_script_run_time", settings.CommandTimeout);
            profile.SetPreference("dom.max_script_run_time", settings.CommandTimeout);

            DesiredCapabilities capabilities = DesiredCapabilities.Firefox();

            capabilities.SetCapability(FirefoxDriver.ProfileCapabilityName, profile.ToBase64String());

            RemoteWebDriver webDriver = CreateRemoteDriver(capabilities, settings);

            return(new DefaultBrowserSession(webDriver).Configure(settings));
        }
Beispiel #5
0
 private DesiredCapabilities SetExtraBrowserStackCaps(DesiredCapabilities caps, string browserName)
 {
     if (browserName.ToLower().Contains("ie"))
     {
         caps.SetCapability("browserstack.ie.enablePopups", "true");
         caps.SetCapability("browserstack.ie.noFlash", "true");
     }
     else if (browserName.ToLower().Contains("firefox"))
     {
         FirefoxProfile firefoxProfile = new FirefoxProfile();
         firefoxProfile.SetPreference("plugin.state.flash", 0);
         caps.SetCapability(FirefoxDriver.ProfileCapabilityName, firefoxProfile.ToBase64String());
     }
     else if (browserName.ToLower().Contains("safari"))
     {
         caps.SetCapability("browserstack.safari.enablePopups", "true");
     }
     caps.SetCapability("browserstack.video", "true");
     return(caps);
 }
Beispiel #6
0
        protected void BrowserDefaults(Browser eBrowser)
        {
            switch (eBrowser)
            {
            case Browser.Chrome:
            {
                Capabilities = DesiredCapabilities.Chrome();
                //creating custom profile to avoid download file dialogs etc.
                var chromeOptions = new ChromeOptions();
                chromeOptions.AddUserProfilePreference("download.default_directory", _driverSettings.DownloadDirectory);
                chromeOptions.AddUserProfilePreference("download.prompt_for_download", false);
                chromeOptions.AddUserProfilePreference("disable-popup-blocking", true);
                Capabilities = chromeOptions.ToCapabilities() as DesiredCapabilities;
                Capabilities.SetCapability(CapabilityType.UnexpectedAlertBehavior, "ignore");
                break;
            }

            case Browser.Firefox:
            {
                Capabilities = DesiredCapabilities.Firefox();
                Capabilities.SetCapability(CapabilityType.UnexpectedAlertBehavior, "ignore");
                //creating custom profile to avoid download file dialogs etc.
                var profile = new FirefoxProfile();
                profile.SetPreference("browser.download.dir", _driverSettings.DownloadDirectory);
                profile.SetPreference("browser.download.folderList", 2);
                profile.SetPreference("browser.helperApps.neverAsk.saveToDisk",
                                      "image/jpeg, application/pdf, application/octet-stream");
                profile.SetPreference("pdfjs.disabled", true);
                //setting the custom profile into the capabilities.
                Capabilities.SetCapability(FirefoxDriver.ProfileCapabilityName, profile.ToBase64String());
                break;
            }

            case Browser.Opera:
            {
                Capabilities = DesiredCapabilities.Opera();
                Capabilities.SetCapability(CapabilityType.UnexpectedAlertBehavior, "ignore");
                break;
            }

            case Browser.InternetExplorer:
            {
                Capabilities = DesiredCapabilities.InternetExplorer();
                Capabilities.SetCapability("EnableNativeEvents", true);
                Capabilities.SetCapability("EnablePersistentHover", true);
                Capabilities.SetCapability("RequireWindowFocus", true);
                Capabilities.SetCapability(CapabilityType.UnexpectedAlertBehavior, "ignore");
                break;
            }

            case Browser.Edge:
            {
                Capabilities = DesiredCapabilities.Edge();
                Capabilities.SetCapability(CapabilityType.UnexpectedAlertBehavior, "ignore");
                break;
            }

            case Browser.Safari:
            {
                Capabilities = DesiredCapabilities.Safari();
                Capabilities.SetCapability(CapabilityType.UnexpectedAlertBehavior, "ignore");
                Capabilities.IsJavaScriptEnabled = true;
                break;
            }

            case Browser.Unspecified:
            {
                Capabilities = new DesiredCapabilities();
                break;
            }

            default:
            {
                throw new ArgumentException("Unexpected browser specified");
            }
            }
        }
 public FirefoxProfileOptions(FirefoxProfile profile)
     : this()
 {
     _capabilities.SetCapability(FirefoxDriver.ProfileCapabilityName, profile.ToBase64String());
 }
Beispiel #8
0
        public IWebDriver GetDriver(out string hostName)
        {
            hostName = string.Empty;
            switch (_browserName.ToLower())
            {
            case KryptonConstants.BROWSER_FIREFOX:
                FirefoxProfile remoteProfile = null;
                try
                {
                    remoteProfile = RemoteFirefoxProfile();
                    _capabilities = DesiredCapabilities.Firefox();
                    _capabilities.SetCapability(KryptonConstants.BROWSER_NAME, KryptonConstants.BROWSER_FIREFOX);
                    _capabilities.SetCapability(KryptonConstants.FIREFOX_PROFILE, remoteProfile.ToBase64String());
                    _driver = new KryptonRemoteDriver(_remoteUrl, _capabilities);
                    _driver.Manage().Window.Maximize();
                }
                catch (Exception ex)
                {
                    bool IsFFprofileExe = false;
                    if (ex.Message.IndexOf("Access to the path", StringComparison.OrdinalIgnoreCase) >= 0)
                    {
                        IsFFprofileExe = true;
                        try
                        {
                            Thread.Sleep(3000);
                            remoteProfile = null;
                            FirefoxProfile remoteProfile2 = RemoteFirefoxProfile();
                            _capabilities = null;
                            DesiredCapabilities capabilities = DesiredCapabilities.Firefox();
                            capabilities.SetCapability(KryptonConstants.BROWSER_NAME, KryptonConstants.BROWSER_FIREFOX);
                            capabilities.SetCapability(KryptonConstants.FIREFOX_PROFILE, remoteProfile2.ToBase64String());
                            _driver = new KryptonRemoteDriver(_remoteUrl, capabilities);
                            _driver.Manage().Window.Maximize();
                        }
                        catch (Exception exmsg)
                        {
                            string errorMsg = string.Empty;
                            while (exmsg != null)
                            {
                                errorMsg += exmsg.Message + Environment.NewLine;
                                exmsg     = exmsg.InnerException;
                            }
                            throw new Exception("Could Not launch browser: " + errorMsg);
                        }
                    }
                    if (!IsFFprofileExe)
                    {
                        string errorMsg = string.Empty;
                        while (ex != null)
                        {
                            errorMsg += ex.Message + Environment.NewLine;
                            ex        = ex.InnerException;
                        }
                        throw new Exception("Could Not launch browser: " + errorMsg);
                    }
                }
                if (Browser.IsBrowserDimendion)
                {
                    _driver.Manage().Window.Size = new System.Drawing.Size(Browser.Width, Browser.Height);
                }
                Browser.Driverlist.Add(_driver);
                break;

            case KryptonConstants.BROWSER_IE:
                Thread.Sleep(2000);
                _capabilities = DesiredCapabilities.InternetExplorer();
                _capabilities.SetCapability(KryptonConstants.BROWSER_NAME, "internet explorer");
                //This will ignore protected mode settings check
                _capabilities.SetCapability("ignoreProtectedModeSettings", true);
                try
                {
                    _driver = new KryptonRemoteDriver(_remoteUrl, _capabilities);
                    _driver.Manage().Window.Maximize();
                }
                catch (Exception ex)
                {
                    string errorMsg = string.Empty;
                    while (ex != null)
                    {
                        errorMsg += ex.Message + Environment.NewLine;
                        ex        = ex.InnerException;
                    }
                    throw new Exception("Could Not launch browser: " + errorMsg);
                }
                if (Browser.IsBrowserDimendion)
                {
                    _driver.Manage().Window.Size = new System.Drawing.Size(Browser.Width, Browser.Height);
                }
                Browser.Driverlist.Add(_driver);
                break;

            case KryptonConstants.BROWSER_CHROME:
                Thread.Sleep(2000);
                _capabilities = DesiredCapabilities.Chrome();
                try
                {
                    _driver = new KryptonRemoteDriver(_remoteUrl, _capabilities);
                    _driver.Manage().Window.Maximize();
                }
                catch (Exception ex)
                {
                    string errorMsg = string.Empty;
                    while (ex != null)
                    {
                        errorMsg += ex.Message + Environment.NewLine;
                        ex        = ex.InnerException;
                    }
                    throw new Exception("Could Not launch browser: " + errorMsg);
                }
                if (Browser.IsBrowserDimendion)
                {
                    _driver.Manage().Window.Size = new System.Drawing.Size(Browser.Width, Browser.Height);
                }
                Browser.Driverlist.Add(_driver);
                break;

            // For Launching Safari on Remote Machine
            case KryptonConstants.BROWSER_SAFARI:
                Thread.Sleep(2000);
                _capabilities = DesiredCapabilities.Safari();
                _capabilities.SetCapability(KryptonConstants.BROWSER_NAME, KryptonConstants.BROWSER_SAFARI);
                _capabilities.IsJavaScriptEnabled = true;
                _driver = new KryptonRemoteDriver(_remoteUrl, _capabilities);
                _driver.Manage().Window.Maximize();
                if (Browser.IsBrowserDimendion)
                {
                    _driver.Manage().Window.Size = new System.Drawing.Size(Browser.Width, Browser.Height);
                }
                Browser.Driverlist.Add(_driver);
                break;
            }
            try
            {
                SessionId id = KryptonRemoteDriver.GetExecutionId(_driver);
                hostName = GetNodeHost(_remoteUrl, id);
                try
                {
                    Uri    remoteInfo = new Uri(hostName);
                    string ip         = remoteInfo.Host.ToString();
                    Property.RemoteMachineIP = ip;
                    hostName = GetMachineNameFromIPAddress(ip);
                    hostName = string.IsNullOrEmpty(hostName) ? ip : hostName;
                }
                catch
                {
                    // ignored
                }
            }
            catch
            {
                // ignored
            }
            return(_driver);
        }