使用Webdriver.io测试时setWindowSize在Chrome中不生效该如何解决
解决方案
- 排查Chrome启动参数冲突
检查你的ChromeOptions配置,是否添加了--start-maximized、--kiosk这类和窗口大小控制冲突的启动参数,这类参数的优先级高于setWindowSize接口,会导致调整命令被静默忽略,删掉冲突参数后重试即可。 - 调整命令调用时机
确保setWindowSize或者其他窗口调整命令的调用时机在浏览器初始化完成之后,不要放在before hook的最开头,最好放在首次页面跳转之后调用,避免浏览器还没完成初始化就执行命令导致失效。 - 无头模式优先用启动参数指定窗口大小
如果你使用的是Chrome无头模式运行测试,直接在启动参数中添加--window-size=1920,1080,比运行时调用setWindowSize的兼容性和稳定性都更高。 - 更换为Chrome原生CDP接口调整大小
通用WebDriver的setWindowSize在部分Chrome版本下存在兼容问题,可以直接调用Chrome DevTools Protocol的接口实现窗口调整,CoffeeScript示例代码如下:browser.call async -> windowInfo = await browser.cdp 'Browser', 'getWindowForTarget' await browser.cdp 'Browser', 'setWindowBounds', windowId: windowInfo.windowId bounds: width: 1920 height: 1080 windowState: 'normal'
补充说明:你之前通过
executeScript修改body样式的方法本身无法实现浏览器窗口大小调整,该操作修改的是页面内容区域的样式,和浏览器外层窗口无关,且你代码中还存在拼写错误heigth,即使要修改页面样式也无法生效。
内容的提问来源于stack exchange,提问作者Paganini
相关产品推荐
相关产品推荐

