有没有办法使用 puppeteer 回复 Chrome 的通知?我试过禁用通知(我想它会默认选择是?),但它没有帮助:
const browser = await puppeteer.launch({headless: false, slowMo: 250, args: ["--disable-notifications"]});
有没有办法使用 puppeteer 回复 Chrome 的通知?我试过禁用通知(我想它会默认选择是?),但它没有帮助:
const browser = await puppeteer.launch({headless: false, slowMo: 250, args: ["--disable-notifications"]});
是的,您可以像@splintor 所说的那样覆盖通知。例如,这是在登录 facebook 时禁用“允许通知”弹出窗口的代码。
let crawl = async function(){
let browser = await puppeteer.launch({ headless:false });
const context = browser.defaultBrowserContext();
// URL An array of permissions
context.overridePermissions("https://www.facebook.com", ["geolocation", "notifications"]);
let page = await browser.newPage();
await page.goto("https://www.facebook.com");
await page.type("#email", process.argv[2]);
await page.type("#pass", process.argv[3]);
await page.click("#u_0_2");
await page.waitFor(1000);
await page.waitForSelector("#pagelet_composer");
let content2 = await page.$$("#pagelet_composer");
console.log(content2); // .$$ An array containing elementHandles .$ would return 1 elementHandle
}
crawl();
检查ovverridePermissions,它是在 Puppeteer v1.8.0 中添加的。
你只需要传递参数
例子:
args: [
"--disable-notifications"
]
确保您想要覆盖其通知的网站不会重定向到子域,因为如果不使用重定向的 url 调用它,overridePermissions 将无法立即工作。
示例:用于关闭通知弹出窗口(puppeteer)
const puppeteer = require("puppeteer");
const website = "https://facebook.com/";
puppeteer
.launch({ headless: false })
.then(async (browser) => {
const page = await browser.newPage();
await page.goto(website);
const context = browser.defaultBrowserContext();
context.overridePermissions(website, ["notifications"]);
})
.catch(console.log);