提问人:I.sh. 提问时间:10/25/2023 更新时间:10/25/2023 访问量:169
如何使用 Playwright 中的现有用户配置文件启动 Chrome 或 Chromium
How to launch Chrome or Chromium using an existing user profile in Playwright
问:
我正在使用剧作家和 TS。
我目前正在使用默认的剧作家设置执行我的测试(如果我没记错的话,它是隐身的)
我想用我自己的 chrome 配置文件执行一些测试。
我试图在 chromium 对象中搜索或属性,
但没有运气。
当然,我已经检查了文档,什么都没有。
我问过一些人工智能工具,也没有帮助。user-XXX
profile
LaunchOptions
像这样的东西:
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...任何事情都会有所帮助。
答:
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...
评论