如何使用 Playwright 中的现有用户配置文件启动 Chrome 或 Chromium

How to launch Chrome or Chromium using an existing user profile in Playwright

提问人:I.sh. 提问时间:10/25/2023 更新时间:10/25/2023 访问量:169

问:

我正在使用剧作家和 TS。
我目前正在使用默认的剧作家设置执行我的测试(如果我没记错的话,它是隐身的) 我想用我自己的 chrome 配置文件执行一些测试。

我试图在 chromium 对象中搜索或属性, 但没有运气。
当然,我已经检查了文档,什么都没有。
我问过一些人工智能工具,也没有帮助。
user-XXXprofileLaunchOptions

像这样的东西:

const browser = await chromium.launch({
      channel: "chrome",

      // Here is what I'm looking for
      user_data_dir: "C:\\Users\\Home\\AppData\\Local\\Google\\Chrome\\User Data"
      // or
      user: ""
      // or
      profile: ""
    });

或通过 BrowserContext...任何事情都会有所帮助。

打字稿 Google-Chrome 自动化 Chromium 剧作家

评论


答:

0赞 ggorlen 10/25/2023 #1

我认为您想要launchPersistentContext的参数:userDataDir

const userDataDir = "C:\\Users\\Home\\AppData\\Local\\Google\\Chrome\\User Data";
const browser = await chromium.launchPersistentContext(
  userDataDir,
  {channel: "chrome"}
);

这是一个完整的最小示例。

索引:.html:

<!DOCTYPE html>
<html><body><script>

const result = localStorage.getItem("foo");

if (result) {
  document.body.innerHTML = `<h1>${result}</h1>`;
}
else { // user's first visit, no local storage was found
  localStorage.setItem("foo", "it worked");
  document.body.innerHTML = `<h1>visit again...</h1>`;
}

</script></body></html>

pw.js:

const {chromium} = require("playwright"); // ^1.38.0

let browser;
(async () => {
  const userDataDir = "test";
  browser = await chromium.launchPersistentContext(userDataDir);
  const page = await browser.newPage();
  await page.goto("http://localhost:8000");
  console.log(await page.locator("h1").textContent());
})()
  .catch(err => console.error(err))
  .finally(() => browser?.close());

输出:

$ python -m http.server &  # serve the page at http://localhost:8000
$ node pw  # first run, no session exists yet
visit again...
$ node pw  # second run, session is preserved
it worked
$ rm -rf test  # destroy the session
$ node pw
visit again...