Kev*_*vin 3 javascript puppeteer
如何使用 Puppeteer 关闭 Chrome 的地理定位权限请求?我已经放在page.on任何地方,并尝试使用confirm,dialog,alert和prompt。我还阅读了以下链接,但找不到解决方案:
我的脚本:
console.log("\nProcess Started");
//sample webpage
let webPage = "https://www.mta.org.nz/find-an-mta/?location=us";
const puppeteer = require("puppeteer");
async function main() {
const browser = await puppeteer.launch({
headless: false
});
const page = await browser.newPage();
await page.setViewport({
width: 1600,
height: 900
});
try {
await page.goto(webPage);
await page.waitForSelector("body");
await console.log("Loaded: " + webPage);
} catch (err) {
console.log("Error: " + webPage + "\n" + err);
}
await page.waitFor(10000);
browser.close();
await console.log("Process Ended \n");
};
main();
Run Code Online (Sandbox Code Playgroud)
Puppeteer API (v1.5.0) 目前不支持捕获权限请求(这将允许授予/拒绝地理位置权限),但作为解决方法,您可以修补navigator.geolocationpage.evaluateOnNewDocument():
await page.evaluateOnNewDocument(function() {
navigator.geolocation.getCurrentPosition = function (cb) {
setTimeout(() => {
cb({
'coords': {
accuracy: 21,
altitude: null,
altitudeAccuracy: null,
heading: null,
latitude: 23.129163,
longitude: 113.264435,
speed: null
}
})
}, 1000)
}
});
await page.goto('https://www.mta.org.nz/find-an-mta/?location=us')
Run Code Online (Sandbox Code Playgroud)
小智 5
// page.setGeolocation(options)
const context = browser.defaultBrowserContext();
await context.overridePermissions(url, ['geolocation']);
Run Code Online (Sandbox Code Playgroud)