尝试使用Selenium webdriver命令在chrome --headless
上设置浏览器大小。
我收到此webdriver错误:
- Failed: unknown error: cannot get automation extension
from unknown error: page could not be found: chrome-extension://aapnijgdinlhnhlmodcfapnahmbfebeb/_generated_background_page.html
(Session info: headless chrome=58.0.3029.81)
(Driver info: chromedriver=2.29.461571 (8a88bbe0775e2a23afda0ceaf2ef7ee74e822cc5),platform=Linux 4.4.0-72-generic x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 10.07 seconds
Build info: version: '3.3.1', revision: '5234b32', time: '2017-03-10 09:04:52 -0800'
System info: host: '826f6a766112', ip: '172.17.0.2', os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-72-generic', java.version: '1.8.0_121'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.29.461571 (8a88bbe0775e2a23afda0ceaf2ef7ee74e822cc5), userDataDir=/tmp/.org.chromium.Chromium.cuymDL}, takesHeapSnapshot=true, pageLoadStrategy=normal, databaseEnabled=false, handlesAlerts=true, hasTouchScreen=false, version=58.0.3029.81, platform=LINUX, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true, unexpectedAlertBehaviour=}]
Session ID: 9569e5ebd8f7540ce510b20647443baf
答案 0 :(得分:53)
找到它,只需将--window-size
命令行argument传递给Google Chrome,例如--window-size=1920,1080
在Protractor配置中,这看起来像这样:
capabilities: {
browserName: 'chrome',
chromeOptions: {
args: ['headless', 'window-size=1920,1080']
}
}
很酷的是,窗户的大小并不局限于当前的显示器,真正无头的意思可以与测试所需的一样大。
Java代码:
options.addArguments("window-size=1920,1080");
答案 1 :(得分:4)
我意识到这有点晚了,但为什么不使用内置的硒?
aDriver.manage().window().setSize(new Dimension(width, height));
像冠军一样工作。我已经将它用于FireFox,Chrome(甚至是无头)和Edge。
答案 2 :(得分:1)
在Jenkins上运行时,屏幕分辨率出现了问题(这会强制采用无头模式)。解决方案非常简单:将无头模式显式设置为true
。由于某种原因,没有明确执行此操作会导致我的屏幕“缩小”,从而导致各种“元素拦截点击”问题。因为我在失败期间拍摄屏幕截图,所以我注意到分辨率(大小)不合适。一旦这样做,问题就消失了。故障期间拍摄的屏幕截图证实了这一点。
为避免与本地配置冲突,我将该标志的值移到了一个配置文件中,然后将其添加到我们的.gitignore
文件中,以防止意外覆盖。
如果您像我一样,这些常用解决方案都无法解决,请确保您明确设置此值:
ChromeOptions options = new ChromeOptions();
...
String headlessMode = readProperty("headless_mode"); // Get value from some prop file (my own implementation)
options.setHeadless(Boolean.valueOf(headlessMode));
...
driver = new ChromeDriver(options);
如果您不需要(或不需要)这种分隔,只需在true
方法调用中将值设置为setHeadless
。
答案 3 :(得分:0)
先生Leo 的回答很有魅力。我已经用 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))
;