You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 21:52:41