使用JavaScript版Selenium时setSize无法设置浏览器尺寸求助
解决Selenium WebDriver中setSize报错的问题
我来帮你搞定这个窗口尺寸调整的问题~你遇到的setSize is not a function报错,大概率是因为Selenium版本的API变化或者异步操作没处理好,下面分几种情况给你解决方案:
1. 优先检查Selenium版本(v4+的正确用法)
如果你用的是Selenium WebDriver 4.x以上的Node.js版本,setSize()方法已经被弃用,取而代之的是setRect()方法,它支持更灵活的窗口参数设置。试试这段代码:
await driver.get(url); await driver.manage().window().setRect({ width: 1200, height: 800 });
⚠️ 注意一定要加await!Selenium的所有操作都是异步的,如果不等待Promise完成,直接调用后续方法,很容易出现“不是函数”这类未初始化相关的报错。
2. 用浏览器原生JS方法(兼容旧版本或特殊场景)
如果你想尝试resizeTo(),要注意这是浏览器端的原生JavaScript方法,不是Selenium驱动的方法,不能直接通过driver.manage().window()调用。你需要用executeScript()让浏览器执行这段代码:
await driver.get(url); await driver.executeScript("window.resizeTo(1200, 800);");
不过要注意:部分现代浏览器(比如Chrome)会限制非用户触发的窗口大小调整,这种方法可能在某些环境下失效,优先推荐用Selenium官方的setRect()。
3. 完整示例代码
给你一个可直接运行的完整示例,包含异步处理和正确的API调用:
const { Builder } = require('selenium-webdriver'); const chrome = require('selenium-webdriver/chrome'); async function adjustWindowSize() { // 初始化Chrome驱动 let driver = await new Builder().forBrowser('chrome').build(); try { // 打开目标页面 await driver.get('https://example.com'); // 设置窗口尺寸为1200x800 await driver.manage().window().setRect({ width: 1200, height: 800 }); // 可以在这里添加其他操作 console.log('窗口尺寸调整完成'); } catch (error) { console.error('操作出错:', error); } finally { // 关闭浏览器 await driver.quit(); } } // 执行函数 adjustWindowSize();
如果还是有问题,可以检查一下你的Selenium依赖版本,运行npm list selenium-webdriver确认版本,或者看看驱动(比如ChromeDriver)是否和浏览器版本匹配。
内容的提问来源于stack exchange,提问作者Dev
相关产品推荐
相关产品推荐

