matmanjs / matman

Web 端对端测试(E2E,End-to-End Testing)解决方案
https://matmanjs.github.io/matman
MIT License
46 stars 10 forks source link

关于底层使用 puppeteer 的讨论 #180

Closed helinjiang closed 4 years ago

helinjiang commented 4 years ago

当前底层使用 nightmare.js,未来可以支持 puppeteer。可能需要以下改造:

需要剥离出 matman-driver-nightmarematman-driver-puppeteer 两个包,而 matman 则提供统一的基础工具,作为一个壳来驱动不同的底层框架,使用方式接近于如下:

    const nightmare = require('matman-driver-nightmare')
    const browser = await matman.launch(nightmare, { show: opts.show });

    browser.setDeviceConfig({
        'UA': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36 mycustomua',
        'width': 1250,
        'height': 400
    });

    browser.setScreenshotConfig(true);

    const page = await browser.newPage({ basePath: __filename, opts });
    // ....

    // 加载页面地址
    page.goto('https://www.baidu.com')

        // 需要等待某些条件达成,才开始运行爬虫脚本
        .wait('#su')

        // 爬虫脚本的函数,用于获取页面中的数据
        .evaluate(() => {
            return {
                title: document.title,
                width: window.innerWidth,
                height: window.innerHeight,
                userAgent: navigator.userAgent,
                _version: Date.now(),
                searchBtnTxt: document.querySelector('#su').value
            };
        })

        // 结束,获取结果
        .end();
wangjq4214 commented 4 years ago

已经切换