如何在Selenium WebDriver 3中最小化浏览器窗口

6
在使用Java的Selenium WebDriver中,执行driver.manage().window().maximize();最大化窗口后,如何将浏览器窗口最小化呢?请参考以下代码:

driver.manage().window().minimize();

1
可能是如何启动最小化的Selenium浏览器(如Firefox)?的重复问题。 - Chanda Korat
9个回答

5

Selenium的Java客户端没有内置方法来最小化浏览上下文

然而,由于默认/常规做法是以最大化模式打开浏览器,而在“测试执行”正在进行时将浏览器最小化将违反最佳实践,因为Selenium可能会失去对浏览上下文的焦点,在测试执行期间可能会引发异常。但是,SeleniumPython客户端确实有一个minimize_window()方法,可以有效地将Chrome浏览上下文推到后台。

示例代码

Python:

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
driver.get('https://www.google.co.in')
driver.minimize_window()

Java:

driver.navigate().to("https://www.google.com/");
Point p = driver.manage().window().getPosition();
Dimension d = driver.manage().window().getSize();
driver.manage().window().setPosition(new Point((d.getHeight()-p.getX()), (d.getWidth()-p.getY())));

4

现在似乎有一个最小化函数:

从文档中了解到:

webdriver.manage().window()

this.minimize() → Promise<undefined>
Minimizes the current window. The exact behavior of this command is specific to individual window managers, but typicallly involves hiding the window in the system tray.

Parameters
None.

Returns
Promise<undefined>
A promise that will be resolved when the command has completed.

所以代码应该是:
webdriver.manage().window().minimize()

至少在JavaScript中


感谢您包含“JavaScript”免责声明。https://www.selenium.dev/selenium/docs/api/dotnet/html/T_OpenQA_Selenium_IWindow.htm表示,最小化功能对于.NET Framework开发人员不存在。 - Zian Choy

2

不幸的是,Selenium没有提供任何内置功能来最小化浏览器窗口。只有最大化窗口的功能。但是有一些解决方法可以实现最小化。

driver.manage().window().setPosition(new Point(-2000, 0));

DebanjanB的回答中所述,minimize_window()函数在Python中可以正常工作。我已经在Firefox中使用过它。 - Peter Mortensen

0

对于 C#,使用 Selinium 3.14 版本进行测试 (Package1Package2),它可以正常工作。

    IWebDriver driver = new ChromeDriver();
    driver.Manage().Window.Minimize();

0
在Selenium 4版本中,Window接口(WebDriver的内部接口)中添加了一个名为minimize()的方法,并且使用Java。因此,如果您有Selenium 4版本,则可以使用driver.manage().window().minimize()

0

这在Python中对我有效。

窗口将会打开,加载后会最小化。

driver.get(url)
driver.minimize_window()

0

我正在使用Selenium WebDriver(Java)3.4.0,并且也没有找到最小化功能。然后,我使用以下代码。

driver.manage().window().maximize();
driver.manage().window().setPosition(new Point(0, -2000));

我们需要导入以下内容来使用Point函数。
import org.openqa.selenium.Point;

它应该做什么?这是什么想法?将窗口移出屏幕? - Peter Mortensen

0
使用以下代码将浏览器窗口最小化。它对我起作用,我正在使用Selenium 3.5:
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_SPACE);
robot.keyPress(KeyEvent.VK_N);
robot.keyRelease(KeyEvent.VK_ALT);
robot.keyRelease(KeyEvent.VK_SPACE);
robot.keyRelease(KeyEvent.VK_N);

-1

试一下,应该可以。

Dimension n = new Dimension(360, 592);  
driver.manage().window().setSize(n);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接