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

使用Selenium JavaScript获取Google页面标题遇[object Promise]错误求助

解决Selenium获取页面标题返回[object Promise]的问题

嘿,我一眼就看出问题啦——你遇到的[object Promise]是因为Selenium WebDriver的几乎所有方法(包括executeScript())都是异步的,它们返回的是Promise对象,而不是直接的结果值。你直接把这个Promise对象和字符串拼接打印,自然就会输出这个奇怪的结果啦。

下面给你几种靠谱的解决办法:

方法1:使用async/await(推荐)

这是现代JavaScript处理异步操作最清晰的方式,把代码放在async函数里,用await等待Promise完成:

const { Builder, By, Key, until } = require('selenium-webdriver');

async function getGoogleTitle() {
  let driver;
  try {
    driver = await new Builder().forBrowser('internet explorer').build();
    await driver.get("https://www.google.com/");
    // 方式A:用executeScript并await结果
    const title = await driver.executeScript("return document.title;");
    console.log("Title: " + title);
    
    // 方式B:其实Selenium有专门的getTitle方法,更简洁!
    // const title = await driver.getTitle();
    // console.log("Title: " + title);
  } catch (error) {
    console.error("出错啦:", error);
  } finally {
    if (driver) {
      await driver.quit(); // 记得关闭驱动,避免残留进程
    }
  }
}

getGoogleTitle();

方法2:使用Promise的.then()回调

如果你不想用async函数,也可以通过Promise的then方法来处理异步结果:

const { Builder, By, Key, until } = require('selenium-webdriver');

new Builder().forBrowser('internet explorer').build()
  .then(driver => {
    return driver.get("https://www.google.com/")
      .then(() => driver.executeScript("return document.title;"))
      .then(title => {
        console.log("Title: " + title);
        return driver.quit();
      })
      .catch(error => {
        console.error("出错啦:", error);
        return driver.quit();
      });
  });

另外提醒一下:IE浏览器的WebDriver配置相对麻烦,可能需要额外设置IE驱动的兼容性(比如启用保护模式一致、设置缩放级别为100%),如果运行时遇到其他错误,记得检查这些配置哦。

内容的提问来源于stack exchange,提问作者Melissa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:47:06