【问题标题】:Couldn't get Puppeteer to click on ad-close button无法让 Puppeteer 点击广告关闭按钮
【发布时间】:2023-03-28 11:56:01
【问题描述】:

我正在尝试使用 node.js 并运行 puppeteer,但我无法让 puppeteer 点击我想要的元素。当我访问一个网站时,会自动弹出一个广告,我需要 puppeteer 来关闭它,但事实证明这非常困难。我在硒方面没有问题,但在 puppeteer 方面有很多问题。这里的一些帮助会很棒。

我使用 puppeteer 访问这个网站streetdirectory。页面加载后几乎立即弹出广告。关闭广告的 HTML 链接如下:

<a href="javascript:void(0);" class="btn_close" onclick="global['ss_offer_cls'] = 1; close_offers_ss_n();"></a>

我尝试了很多方法,但都没有成功。我试过await page.click(a.btn_close)await page.click(#btn_close),这就是我现在正在做的,但仍然没有工作。

const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.goto('https://www.streetdirectory.com/');
    closeButton = await page.evaluate((btn_close) => {
        document.getElementsByClassName(btn_close);
    });
    await page.click(closeButton)
    await page.screenshot({path: '/users/cadellteng/desktop/ss.png'})

    await browser.close();
})();

感谢您的帮助。谢谢。

【问题讨论】:

    标签: node.js puppeteer


    【解决方案1】:

    如果您要检查页面的行为,那么您会发现弹出窗口在加载时没有打开 但它也在几秒钟后打开(加载完整页面时)。 所以请试试这个

     await page.goto('https://www.streetdirectory.com/');
        await page.waitFor(5000);
        let offerScreen='#offers_splash_screen';
        /**
         * Check for Offer popup page
         */
        let checkForElement = await page.evaluate((sel)=>{
               let elementCheck =Array.from(document.querySelectorAll(sel));
               if(elementCheck.length){
                   return true
               }else return false;
    
        },offerScreen);
        /** 
         * If the offer popup page opened then click on 
         * close button
         */
        let closeBtn='.btn_close';
        if(checkForElement){
            console.log("Close btn .....");
               await page.waitForSelector(closeBtn);
               await page.click(closeBtn);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 2017-08-18
      • 2021-08-30
      • 1970-01-01
      相关资源
      最近更新 更多