如何使用 chrome 选项将无头 chrome 的窗口大小设置为全屏?

问题描述 投票:0回答:5

执行 UI 测试时,出现错误,selenium 不支持 chromedriver 自动调整窗口大小,导致测试失败。

有没有办法使用 chrome-options for

headless-chrome
进行设置?

我尝试过以下方法,

ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");

此外,将

"--start-maximized"
替换为
"--start-fullscreen"
"--kiosk"

但是以上都不适合我,唯一适合我的选择是

"--window-size=width,height"

我不想对宽度和高度的值进行硬编码,有什么方法可以设置全屏吗?

java google-chrome selenium-webdriver google-chrome-headless
5个回答
22
投票

问题在于,无头模式适用于没有屏幕的计算机,因此即使您有屏幕,它也无法确定您的屏幕尺寸。唯一的方法是使用 --window-size 将该信息传递给浏览器。

所有平台上无头模式下的默认窗口大小和显示大小均为 800x600。

因此最大化窗口大小不适用于 chrome-headless,需要由用户显式设置(如果需要)。


4
投票

它对我有用,我已经用 6000x6000 窗口大小对此进行了测试。 下面的答案有帮助。 链接

c#代码

    var options = new ChromeOptions(); 
    options.AddArgument("no-sandbox");
    options.AddArgument("headless");
    options.addArguments("window-size=1920,1080");
    IWebDriver _driver= new ChromeDriver($@"path to chrome web driver folder", options, TimeSpan.FromSeconds(130))

;


1
投票

这对我有用

driver.manage().window().setSize(new Dimension(1600,700));


0
投票

还有另一种选择。您可以执行以下操作,而不是

--start-maximized
选项:

WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();

0
投票

我通过应用不同的选项解决了这个问题

chrome_options.add_argument(f"--window-size={width},{height}")
chrome_options.add_experimental_option("mobileEmulation", {
    "deviceMetrics": {
        "width": width,
        "height": height,
        "pixelRatio": 1.0
    }
})

driver.set_window_size(width, height)
driver.execute_cdp_cmd('Emulation.setDeviceMetricsOverride', {
    "width": width,
    "height": height,
    "deviceScaleFactor": 1.0,
    "mobile": False
})

driver.execute_script(f"""
    window.resizeTo({width}, {height});
    window.outerWidth = {width};
    window.outerHeight = {height};
    window.innerWidth = {width};
    window.innerHeight = {height};
""")

driver.set_window_rect(x=0, y=0, width=width, height=height)
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.