예제 #1
0
 public void WindowSizeEnumReturnsSizeWhereValid(WindowSize windowSize, int expectedWidth, int expectedHeight)
 {
     using (new AssertionScope())
     {
         windowSize.Size().Width.Should().Be(expectedWidth);
         windowSize.Size().Height.Should().Be(expectedHeight);
     }
 }
예제 #2
0
 /// <summary>
 /// Generate a new immutable WebDriverConfiguration instance.
 /// </summary>
 /// <param name="browser"></param>
 /// <param name="gridUri"></param>
 /// <param name="headless"></param>
 /// <param name="isLocal"></param>
 /// <param name="platformType"></param>
 /// <param name="windowSize"></param>
 /// <param name="windowDefinedSize"></param>
 public WebDriverConfiguration(
     Browser browser           = Browser.Firefox,
     Uri gridUri               = null,
     bool headless             = false,
     bool isLocal              = true,
     PlatformType platformType = PlatformType.Any,
     WindowSize windowSize     = WindowSize.Hd,
     Size windowDefinedSize    = new Size())
 {
     Browser      = browser;
     GridUri      = gridUri;
     Headless     = headless;
     IsLocal      = isLocal;
     PlatformType = platformType;
     WindowSize   = (
         windowSize == WindowSize.Maximise ||
         windowSize == WindowSize.Maximize ||
         windowSize == WindowSize.Unchanged) ?
                    windowSize :
                    WindowSize.Defined;
     WindowDefinedSize = (windowSize == WindowSize.Custom || windowSize == WindowSize.Defined) ?
                         windowDefinedSize :
                         windowSize.Size();
     description = new StringBuilder()
                   .Append($"{base.ToString()}: (")
                   .Append($" Browser: {Browser.ToString()} ")
                   .Append(Headless ? "headless" : "on screen")
                   .Append($", Size: {WindowDefinedSize.Width} x {WindowDefinedSize.Height}, ")
                   .Append(IsLocal ? "running locally)" : $"running remotely on {GridUri} on platform: {PlatformType}.)")
                   .ToString();
 }
        /// <summary>
        /// Set the WebDriver to the requested Browser size.
        /// </summary>
        /// <param name="driver"></param>
        /// <param name="windowSize"></param>
        /// <param name="windowCustomSize"></param>
        /// <returns></returns>
        public IWebDriver SetWindowSize(IWebDriver driver, WindowSize windowSize, Size windowCustomSize = new Size())
        {
            switch (windowSize)
            {
            case WindowSize.Unchanged:
                return(driver);

            case WindowSize.Maximise:
                driver.Manage().Window.Maximize();
                return(driver);

            case WindowSize.Maximize:
                driver.Manage().Window.Maximize();
                return(driver);

            case WindowSize.Defined:
                if (!((WebDriver)driver).Capabilities.GetCapability("browserName").Equals("Safari"))
                {
                    driver.Manage().Window.Position = Point.Empty;
                }
                driver.Manage().Window.Size = windowCustomSize;
                return(driver);

            default:
                if (!((WebDriver)driver).Capabilities.GetCapability("browserName").Equals("Safari"))
                {
                    driver.Manage().Window.Position = Point.Empty;
                }
                driver.Manage().Window.Size = windowSize.Size();
                return(driver);
            }
        }
예제 #4
0
        /// <summary>
        /// Return a formatted, human readable Json string suitable for saving locally in a Config_WebDriver.json file
        /// </summary>
        /// <returns></returns>
        public string GetJsonConfigString()
        {
            // Serialising using json.net produces minimal, non readable json: Manually generate a readable, formatted string.
            StringBuilder jsonBuilder = new StringBuilder();

            jsonBuilder.AppendLine("{");
            jsonBuilder.AppendLine($"  \"Browser\": \"{browser.ToString()}\",");
            jsonBuilder.AppendLine($"  \"IsLocal\": {isLocal.ToString().ToLower()},");
            jsonBuilder.AppendLine($"  \"PlatformType\": \"{platformType.ToString()}\",");
            jsonBuilder.AppendLine($"  \"Headless\": {headless.ToString().ToLower()},");
            if (windowSize == WindowSize.Maximise || windowSize == WindowSize.Maximize || windowSize == WindowSize.Unchanged)
            {
                jsonBuilder.AppendLine($"  \"WindowSize\": \"{windowSize.ToString()}\",");
            }
            else
            {
                jsonBuilder.AppendLine($"  \"WindowSize\": \"{WindowSize.Defined.ToString()}\",");
                if (windowSize == WindowSize.Custom || windowSize == WindowSize.Defined)
                {
                    jsonBuilder.AppendLine($"  \"WindowDefinedSize\": {{\"width\":{windowDefinedSize.Width}, \"height\":{windowDefinedSize.Height}}},");
                }
                else
                {
                    jsonBuilder.AppendLine($"  \"WindowDefinedSize\": {{\"width\":{windowSize.Size().Width}, \"height\":{windowSize.Size().Height}}},");
                }
            }
            jsonBuilder.AppendLine($"  \"GridUri\": \"{gridUri}\"");
            jsonBuilder.AppendLine("}");
            return(jsonBuilder.ToString());
        }