【问题标题】:How to disable popup blocker?如何禁用弹出窗口阻止程序?
【发布时间】:2020-06-10 17:59:31
【问题描述】:

目前,我面临一个问题。如果我使用headless: false 访问该页面,一切都很好。虽然headless: true 页面检测到弹出窗口阻止程序已启用,所以我无法继续执行剩余操作。

这是我的浏览器配置:

const browser = await puppeteer.launch({
    args: ["--disable-popup-blocking", "--allow-popups-during-page-unload"],
    headless: true
  });
  const page = await browser.newPage();
  await page.setExtraHTTPHeaders({
    "Accept-Language": "en-GB,en-US;q=0.9,en;q=0.8"
  });
  await page.setUserAgent(
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
  );
  await page.setJavaScriptEnabled(true);
  await page.setBypassCSP(true);
  await page.goto(URL);

有什么方法可以禁用弹出窗口拦截器?

【问题讨论】:

  • 我无法想象弹出窗口阻止是 chrome 的默认设置。这通常是一个插件对吗?您使用的二进制文件是什么?是你自己的浏览器吗?你应该为此下载一个 chrome 二进制文件。
  • @unflores 我正在使用内置的铬
  • 看起来您启用了两个不同的参数。您是否尝试启用或禁用弹出窗口?你需要那个弹出窗口还是不需要?
  • @kirill.z 感谢兄弟的帮助,这实际上是一个已知的铬错误
  • @OysterD3 请与我分享那个错误?

标签: javascript node.js puppeteer


【解决方案1】:

只需禁用弹出窗口。我的意思是 JS 的浏览器上下文相同,所以创建一个辅助方法来调用下一个脚本:

await page.evaluate(() => document.alert = window.alert = alert = () => {};)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多