执行 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"
。
我不想对宽度和高度的值进行硬编码,有什么方法可以设置全屏吗?
问题在于,无头模式适用于没有屏幕的计算机,因此即使您有屏幕,它也无法确定您的屏幕尺寸。唯一的方法是使用 --window-size 将该信息传递给浏览器。
所有平台上无头模式下的默认窗口大小和显示大小均为 800x600。
因此最大化窗口大小不适用于 chrome-headless,需要由用户显式设置(如果需要)。
它对我有用,我已经用 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))
;
这对我有用
driver.manage().window().setSize(new Dimension(1600,700));
还有另一种选择。您可以执行以下操作,而不是
--start-maximized
选项:
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
我通过应用不同的选项解决了这个问题
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)