美文网首页
puppeteer chrome/chrome canary 登

puppeteer chrome/chrome canary 登

作者: tyoko | 来源:发表于2019-01-24 09:27 被阅读0次

    如果你的自动化测试场景有需要登录Chrome去authorize的话,肯定会用到这些步骤的
    之前用selenium也实验过用本地的profile去模拟已经登录的场景,但是当点击去登录时,页面一直转转转,一片空白,一片空白,空白

    转战puppeteer之后,可以正常打开authorization页面耶,这是成功的表现
    亲儿子鸭

    官方资料显示,在使用puppeteer去操作authorize的时候,不能使用chromium(我本地使用chromium去登录时就没登录上去过),so 需要在launch browser时必须指定要运行的browser(默认是使用chromium),请使用executablePath,Chrome和 Chrome canary都可以支持

    executablePath:'/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary',
    
    executablePath:'/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome',
    

    and then,也需要指定你本地已经登录到浏览器的profile

    userDataDir:'~/Documents/Google/Chrome',
    

    本地的profile最好是拷贝到一个路径下,每次要测试authorize的时候,都需要操作一步拷贝的动作,因为每次运行完之后profile都会被新的操作覆盖,不是“干净”的了
    摘自官方的代码puppeteer user-data-dir

    const puppeteer = require('puppeteer');
    
    (async () => {
      const datadir = '/tmp/profile/';
      const browser = await puppeteer.launch({
          // Ask puppeteer to run Chrome Canary
          executablePath: '/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary',
          headless: false,
          userDataDir: datadir,
      });
      const page = await browser.newPage();
      await page.goto('https://example.com');
      await page.screenshot({ path: 'example.png', fullPage: true });
      await browser.close();
    
    })();
    

    如果launch browser以后,有new一个新的page,新page的登录状态没有带过去,要在自启动的browser上new tab即可

    相关文章

      网友评论

          本文标题:puppeteer chrome/chrome canary 登

          本文链接:https://www.haomeiwen.com/subject/fvksjqtx.html