blob: 2d5adb8cbbe1b85554340fd9e8977e55722bf04a [file] [log] [blame] [edit]
// <copyright file="WindowTest.cs" company="Selenium Committers">
// Licensed to the Software Freedom Conservancy (SFC) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The SFC licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
// </copyright>
using NUnit.Framework;
using System;
using System.Drawing;
namespace OpenQA.Selenium;
[TestFixture]
public class WindowTest : DriverTestFixture
{
private Size originalWindowSize;
[SetUp]
public void GetBrowserWindowSize()
{
driver.Manage().Window.Position = new Point(50, 50);
this.originalWindowSize = driver.Manage().Window.Size;
}
[TearDown]
public void RestoreBrowserWindow()
{
driver.Manage().Window.Size = originalWindowSize;
}
[Test]
public void ShouldBeAbleToGetTheSizeOfTheCurrentWindow()
{
Size size = driver.Manage().Window.Size;
Assert.That(size.Width, Is.GreaterThan(0));
Assert.That(size.Height, Is.GreaterThan(0));
}
[Test]
public void ShouldBeAbleToSetTheSizeOfTheCurrentWindow()
{
IWindow window = driver.Manage().Window;
Size size = window.Size;
// resize relative to the initial size, since we don't know what it is
Size targetSize = new Size(size.Width - 20, size.Height - 20);
ChangeSizeBy(-20, -20);
Size newSize = window.Size;
Assert.That(newSize.Width, Is.EqualTo(targetSize.Width));
Assert.That(newSize.Height, Is.EqualTo(targetSize.Height));
}
[Test]
public void ShouldBeAbleToSetTheSizeOfTheCurrentWindowFromFrame()
{
IWindow window = driver.Manage().Window;
Size size = window.Size;
driver.Url = framesetPage;
driver.SwitchTo().Frame("fourth");
try
{
// resize relative to the initial size, since we don't know what it is
Size targetSize = new Size(size.Width - 20, size.Height - 20);
window.Size = targetSize;
Size newSize = window.Size;
Assert.That(newSize.Width, Is.EqualTo(targetSize.Width));
Assert.That(newSize.Height, Is.EqualTo(targetSize.Height));
}
finally
{
driver.SwitchTo().DefaultContent();
}
}
[Test]
public void ShouldBeAbleToSetTheSizeOfTheCurrentWindowFromIFrame()
{
IWindow window = driver.Manage().Window;
Size size = window.Size;
driver.Url = iframePage;
driver.SwitchTo().Frame("iframe1-name");
try
{
// resize relative to the initial size, since we don't know what it is
Size targetSize = new Size(size.Width - 20, size.Height - 20);
window.Size = targetSize;
Size newSize = window.Size;
Assert.That(newSize.Width, Is.EqualTo(targetSize.Width));
Assert.That(newSize.Height, Is.EqualTo(targetSize.Height));
}
finally
{
driver.SwitchTo().DefaultContent();
}
}
[Test]
public void ShouldBeAbleToGetThePositionOfTheCurrentWindow()
{
Point position = driver.Manage().Window.Position;
Assert.That(position.X, Is.GreaterThan(0));
Assert.That(position.Y, Is.GreaterThan(0));
}
[Test]
public void ShouldBeAbleToSetThePositionOfTheCurrentWindow()
{
IWindow window = driver.Manage().Window;
window.Size = new Size(200, 200);
Point position = window.Position;
Point targetPosition = new Point(position.X + 10, position.Y + 10);
window.Position = targetPosition;
Point newLocation = window.Position;
Assert.That(newLocation.X, Is.EqualTo(targetPosition.X));
Assert.That(newLocation.Y, Is.EqualTo(targetPosition.Y));
}
[Test]
public void ShouldBeAbleToMaximizeTheCurrentWindow()
{
Size targetSize = new Size(640, 400);
ChangeSizeTo(targetSize);
Maximize();
IWindow window = driver.Manage().Window;
Assert.That(window.Size.Height, Is.GreaterThan(targetSize.Height));
Assert.That(window.Size.Width, Is.GreaterThan(targetSize.Width));
}
[Test]
public void ShouldBeAbleToMaximizeTheWindowFromFrame()
{
driver.Url = framesetPage;
ChangeSizeTo(new Size(640, 400));
driver.SwitchTo().Frame("fourth");
try
{
Maximize();
}
finally
{
driver.SwitchTo().DefaultContent();
}
}
[Test]
public void ShouldBeAbleToMaximizeTheWindowFromIframe()
{
driver.Url = iframePage;
ChangeSizeTo(new Size(640, 400));
driver.SwitchTo().Frame("iframe1-name");
try
{
Maximize();
}
finally
{
driver.SwitchTo().DefaultContent();
}
}
//------------------------------------------------------------------
// Tests below here are not included in the Java test suite
//------------------------------------------------------------------
[Test]
[IgnoreBrowser(Browser.IE, "Edge in IE Mode does not support full screen")]
public void ShouldBeAbleToFullScreenTheCurrentWindow()
{
IWindow window = driver.Manage().Window;
Size origSize = window.Size;
Size targetSize = new Size(640, 400);
ChangeSizeTo(targetSize);
FullScreen();
Size windowSize = window.Size;
Assert.That(windowSize.Height, Is.GreaterThan(targetSize.Height));
Assert.That(windowSize.Width, Is.GreaterThan(targetSize.Width));
}
[Test]
public void ShouldBeAbleToMinimizeTheCurrentWindow()
{
Size targetSize = new Size(640, 400);
ChangeSizeTo(targetSize);
driver.Manage().Window.Minimize();
Assert.That(((IJavaScriptExecutor)driver).ExecuteScript("return document.hidden;"), Is.True);
}
private void FullScreen()
{
IWindow window = driver.Manage().Window;
Size currentSize = window.Size;
window.FullScreen();
}
private void Maximize()
{
IWindow window = driver.Manage().Window;
Size currentSize = window.Size;
window.Maximize();
WaitFor(WindowHeightToBeGreaterThan(currentSize.Height), "Window height was not greater than " + currentSize.Height.ToString());
WaitFor(WindowWidthToBeGreaterThan(currentSize.Width), "Window width was not greater than " + currentSize.Width.ToString());
}
private void ChangeSizeTo(Size targetSize)
{
IWindow window = driver.Manage().Window;
window.Size = targetSize;
WaitFor(WindowHeightToBeEqualTo(targetSize.Height), "Window height was " + window.Size.Height + " not " + targetSize.Height.ToString());
WaitFor(WindowWidthToBeEqualTo(targetSize.Width), "Window width was not " + targetSize.Width.ToString());
}
private void ChangeSizeBy(int deltaX, int deltaY)
{
IWindow window = driver.Manage().Window;
Size size = window.Size;
ChangeSizeTo(new Size(size.Width + deltaX, size.Height + deltaY));
}
private Func<bool> WindowHeightToBeEqualTo(int height)
{
return () => { return driver.Manage().Window.Size.Height == height; };
}
private Func<bool> WindowWidthToBeEqualTo(int width)
{
return () => { return driver.Manage().Window.Size.Width == width; };
}
private Func<bool> WindowHeightToBeGreaterThan(int height)
{
return () => { return driver.Manage().Window.Size.Height > height; };
}
private Func<bool> WindowWidthToBeGreaterThan(int width)
{
return () => { return driver.Manage().Window.Size.Width > width; };
}
private Func<bool> WindowHeightToBeLessThan(int height)
{
return () => { return driver.Manage().Window.Size.Height < height; };
}
private Func<bool> WindowWidthToBeLessThan(int width)
{
return () => { return driver.Manage().Window.Size.Width < width; };
}
}