外向小朋友 2019-06-12 09:30 采纳率: 66.7%
浏览 2136
已采纳

使用puppeteer做自动检测,登陆跳转完成后,在执行点击操作时报错怎么解决?

最近尝试用puppeteer做自动检测,我在跳转后,选取::before ::after做点击事件,代码如下

const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch({
        headless: false,
         timeout: 30000,
    });
    const page = await browser.newPage();
    await page.goto('http://localhost:62114/Account/Login?ReturnUrl=%2F');
    await page.click("a[data-target='#TenantChangeModal']")
    await page.waitFor(1000);
    await page.type("input[name='TenancyName']",'Default',{delay:100})
    await page.waitFor(500);
    await page.click('.btn.btn-primary.save-button.waves-effect');
    await page.waitFor(2000);
    await page.type("input[name='usernameOrEmailAddress']",'admin',{delay:100});
    await page.waitFor(500);
    await page.type("input[name='Password']",'123qwe',{delay:100});
    const navigationPromise = page.waitForNavigation();
    await page.click('#LoginButton'); //然后点击
    await page.waitFor(1000);
                await page.click("a[class='bars::before']");
        //await page.click("a[class='bars']"); //然后点击
})();

跳转成功了
第一个报出这种错误:No node found for selector: a[class='bars::before']
被注释掉的是这个错误:
图片说明
这个错误我分析要么是这个选取得时候错了,a[class='bars::beforean']这样得选取不了,要么是页面里面的东西没获取到,请前辈们帮我看一下,给个解决方案,万分感谢。

  • 写回答

1条回答 默认 最新

  • 外向小朋友 2019-06-18 14:40
    关注

    使用page.$eval()函数,完美解决,没人回答我,我只能逐字取看puppeteer的api,最后发现这个函数可以做到

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 汇编语言除法溢出问题
  • ¥65 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗