Web自动化

2018-06-26

实现Web自动化有很多方法,比如selenium,或者模拟图形化操作的xdotool:

http://git.malu.me/xdotool自动化工具笔记/

selenium

相对来说最成熟了,支持各大主流浏览器(需要webdriver支持)。

puppeteer

puppeteer是谷歌chrome团队出的支持chrome无头模式,可模拟移动端,node编写,语法精炼,性能强劲。

API文档:https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md

自动收取邮件示例:

const puppeteer = require('puppeteer');

const autoSubmitForm = async (url) => {
    // 启动浏览器
    const browser = await puppeteer.launch({
        // 关闭无头模式,方便我们看到这个无头浏览器执行的过程
        headless: false,
        // chrome 启动参数
        args: ['--no-sandbox'],
        // 显示chrome log信息和错误信息
        dumpio: true,
    });

    // 打开页面
    const page = await browser.newPage();
    // 设置浏览器视窗
    page.setViewport({
        width: 1920,
        height: 1080,
    });
    // 地址栏输入网页地址
    await page.goto(url, {
        waitUntil: 'networkidle2', // 等待网络状态为空闲的时候才继续执行
    });

    // 点头像登录
    await page.mouse.click(1300,441);
    await page.waitFor(3000);
    // 点代收邮箱
    await page.mouse.click(80,376);
    await page.waitFor(2000);
    while (true) {
        // 点收取
        await page.mouse.click(265, 119);
        await page.waitFor(60000*5);
    }
};

if (require.main === module) {
    autoSubmitForm('http://mail.qq.com/cgi-bin/frame_html');
}