Example #1
0
        public IWebDriver GetWebDriver(WebDriverParameters parameters)
        {
            IWebDriver Instance = null;

            // Create all desired capabilities
            var desiredCaps = new DesiredCapabilities();
            foreach (var cap in parameters.capabilities)
            {
                desiredCaps.SetCapability(cap.Key, cap.GetValue());
            }
            desiredCaps.SetCapability(CapabilityType.Platform, new Platform(GetPlatformTypeFromString(parameters.platform)));
            desiredCaps.SetCapability(CapabilityType.BrowserName, parameters.browserName);
            if (parameters.version != string.Empty)
            {
                desiredCaps.SetCapability(CapabilityType.Version, parameters.version);
            }

            // Attempt to instantiate the driver, catching the usual errors and providing more detailed info.
            try
            {
                Instance = new ScreenShotRemoteWebDriver(new Uri(parameters.hubUri), desiredCaps, TimeSpan.FromSeconds(parameters.commandTimeout));
                // If we've specified a browser's height and width, set it - otherwise just maximize it.  Hopefully we have consistent display resolution on our VM's.
                if (parameters.browserHeight != null && parameters.browserWidth != null)
                {
                    Instance.Manage().Window.Size = new Size(parameters.browserWidth.GetValueOrDefault(), parameters.browserHeight.GetValueOrDefault());
                }
                else
                {
                    //Instance.Manage().Window.Maximize();
                }
            }
            catch (Exception ex)
            {
                // If we don't know how to handle the exception better than Selenium, just pass it along.
                if (!(ex is WebDriverException || ex is InvalidOperationException))
                {
                    throw;
                }

                // But if we do... provide some more helpful messages and such.
                if (ex.Message.Contains("No connection could be made because the target machine actively refused it"))
                {
                    throw new System.Net.WebException(
                        "Target machine refused connection at " + parameters.hubUri +
                        ". Check webDriverConfig remoteDriver settings and ensure server is reachable.", ex);
                }

                if (ex.Message.Contains("No enum const class org.openqa.selenium.Platform."))
                {
                    throw new System.InvalidCastException(
                        "Invalid platform type: " + parameters.platform +
                        ". Check webDriverConfig remoteDriver platform setting and ensure it is an exact match of a known enumeration within " +
                        typeof(PlatformType).ToString(), ex);
                }

                if (ex.Message.Contains("Error forwarding the new session cannot find :"))
                {
                    throw new ArgumentException(
                        "No nodes have a browser that matches the requirements: Platform=" + parameters.platform + ", BrowserName=" +
                        parameters.browserName + ", Version=" + parameters.version, ex);
                }

                throw;
            }

            return Instance;
        }
Example #2
0
        public IWebDriver GetWebDriver(WebDriverParameters parameters)
        {
            IWebDriver driver = null;
            var desiredCaps = new DesiredCapabilities();

            foreach (var cap in parameters.capabilities)
            {
                desiredCaps.SetCapability(cap.Key, cap.GetValue());
            }
            //desiredCaps.SetCapability(CapabilityType.Platform, new Platform(GetPlatformTypeFromString(parameters.platform)));
            //desiredCaps.SetCapability(CapabilityType.BrowserName, parameters.browserName);
            //if (parameters.version != string.Empty)
            //{
            //    desiredCaps.SetCapability(CapabilityType.Version, parameters.version);
            //}
            var ieOptions = new OpenQA.Selenium.IE.InternetExplorerOptions();
            ieOptions.IgnoreZoomLevel = true;
            ieOptions.UnexpectedAlertBehavior = OpenQA.Selenium.IE.InternetExplorerUnexpectedAlertBehavior.Accept;

            var chromeOptions = new OpenQA.Selenium.Chrome.ChromeOptions();
            chromeOptions.AddAdditionalCapability("unexpectedAlertBehaviour", "Accept");

            switch (parameters.browserName.ToUpperInvariant())
            {
                case "CHROME":
                    driver = new OpenQA.Selenium.Chrome.ChromeDriver(chromeOptions);
                    break;
                case "ANDROIDCHROME":
                    driver = new OpenQA.Selenium.Chrome.ChromeDriver(chromeOptions);
                    break;
                case "IE":
                    driver = new OpenQA.Selenium.IE.InternetExplorerDriver(ieOptions);
                    break;
                case "FIREFOX":
                    driver = new OpenQA.Selenium.Firefox.FirefoxDriver(desiredCaps);
                    break;
            }

            //driver.S(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.ACCEPT);

            return driver;
        }