从零开始实现WEB自动化 - 网页操作

本篇是带领大家一起来搭建自动化操作的Chrome插件

网页操作基本只会涉及background.js文件的编写,所以我们来分段实现功能清单的操作

可以根据此篇文章来了解Chrome API支持功能项,来实现功能需求。

chrome谷歌浏览器开发文档谷歌浏览器扩展开发- cenchy.com,chrome,chrome扩展,chrome扩展开发,谷歌浏览器,谷歌浏览器api,谷歌浏览器扩展开发icon-default.png?t=O83Ahttps://chrome.cenchy.com/tabs.html

打开网页

功能需求:给定URL,在新建页签中打开并需等待目标网址加载完成。

const BusOperation = {
    //打开网页,
    //url,打开的网页地址并等待加载完成并至多等待至超时时间
    openUrl: async (url, timeout=20) => {
        let cfg = {url: url}
        let tab = await NatOperation.tabsCreate(cfg);
        for(let i=0; i< timeout; i++){
            await NatOperation.wait(1000); //等待1秒
            let state = await NatOperation.sendContentMessage(tab.id, "loadState", {});
            if(state == BUS_PARAM_S.PAGE_STATE_SUCCESSFUL){
                break
            }
        }
    }
}

调用测试

let url = 'https://www.baidu.com/'
BusOperation.openUrl(url)

点击刷新后,浏览器会自动打开百度搜索,说明我们打开网页功能完成。

获取网页

功能需求:获取已打开的网页页签

//返回已选中的页签数据
currentTab: async () => {
    let tabList = await NatOperation.tabsQuery();
    for (const tab of tabList){
        if(tab.active){
            return tab
        }
    }
    return null;
}

跳转网页

功能需求:给定URL地址,在当前页签上跳转至新的网址

Chrome API虽然没有直接给定的API支持调用,但是我们可以通过执行JavaScript脚本的方式进行URL跳转,例如

window.location.href = 'https://www.baidu.com/'

那我们实现如下

    //执行JavaScript脚本
    //data.tabid = 浏览器页签ID,可从openUrl或currentTab获取
    //data.code = 需要执行的脚本
    executeScript: async (data) => {
        if(!data.tabid || !data.code){
            return;
        }
        let script = "function doSend() { " + data.code + " }; doSend();";
        await NatOperation.executeScript(parseInt(data.tabid), { code: script })
    }

    //调用。。。
    let code = "window.location.href = 'https://blog.csdn.net/';"
    await BusOperation.executeScript({
        tabid: openTab.id,
        code: code
    });

切换页签

功能需求:根据传入的tab页签记录,切换浏览器页签

    //选中某个页签
    selectTab: async (tabid) => {
        let tab = await BusOperation.selectTabByTabId(tabid);
        if(tab != null){
            await NatOperation.highlight(tab.index);
        }
    },
    //根据tabid查找tab对象
    selectTabByTabId: async (tabid) => {
        let tabList = await NatOperation.tabsQuery();
        for(tab of tabList){
            if(tabid === tab.id){
                return tab
            }
        }
        return null;
    }

执行脚本

功能需求:执行一段自定义的JavaScript脚本

    //执行JavaScript脚本
    //data.tabid = 浏览器页签ID,可从openUrl或currentTab获取
    //data.code = 需要执行的脚本
    executeScript: async (data) => {
        if(!data.tabid || !data.code){
            return;
        }
        let script = "function doSend() { " + data.code + " }; doSend();";
        await NatOperation.executeScript(parseInt(data.tabid), { code: script })
    },

关闭网页

功能需求:根据页签ID,关闭浏览器页签

    //关闭浏览器页签
    colseTab: (tabid) => {
        tabid && chrome.tabs.remove(parseInt(tabid));
    },

以上的功能逻辑测试如下

async function opt_test(){
    //1.打开网页
    let url = 'https://www.baidu.com/'
    let openTab = await BusOperation.openUrl(url)
    //2.获取网页
    let tab = await BusOperation.currentTab();
    console.log("currentTab", tab);
    //3.跳转网页&执行JavaScript脚本
    await NatOperation.wait(2000);
    let code = "window.location.href = 'https://blog.csdn.net/';"
    await BusOperation.executeScript({
        tabid: openTab.id,
        code: code
    });
    await NatOperation.wait(2000);
    //4.选中页签
    let openTab1 = await BusOperation.openUrl(url);
    await NatOperation.wait(2000);
    await BusOperation.selectTab(openTab.id);
    //5.关闭页签
    await NatOperation.wait(1000);
    BusOperation.colseTab(openTab.id);
    await NatOperation.wait(1000);
    BusOperation.colseTab(openTab1.id);
}

以上便是网页操作部分的代码了,了解API文档,知道什么该调用什么API,其实实现起来是非常容易的。

网页自动操作监控工具适合代替人工完成重复的网页操作。比如自动登陆网站后自动点击签到,自动输入内容并发表;商品抢购也可以用本软件设置好流程自动完成;批量自动发表评论等。 网页自动操作监控工具由自动刷新工具、自动点击工具和自动提交工具组成。通过这些工具组合可实现网页操作自动化,本软件中可以添加多个操作动作,设置各项操作顺序,同时监控网页内容变化,触发新的操作,每项操作都支持多线程。支持使用代理服务器更换IP访问,定时任务在无人值守的情况下自动完成,程序可完全隐藏后台运行。 1、支持定时操作和多线程操作。 2、支持后台操作或者前台显示操作效果,可完全隐藏运行。 3、一个任务可针对同一页面添加多个操作。 4、多任务可相互触发连续或循环执行。 5、兼容自动刷新任务、自动点击任务和自动提交任务。 6、支持代理服务器,换IP操作。可导入大量免费代理服务器,可随机使用或环使用代理服务器 7、支持对代理服务器使用情况进行统计管理。 8、网页内容变化监控,包括脚本执行产生的变化。 9、网页内容关键字监控,同时监控多个关键字。 10、网页HTML元素级监控,同时监控多个元素,进行数据比较。 11、网络故障监控,本地网络故障时报警。 12、面加载失败监控,网站服务器出现问题,或网页打不开时报警。 13、监控报警处置方式:弹出提示对话框;声音提示;任务中止;启动新任务;启动外部处置程序;保存当前页面;程序关闭;自动关机。 WINXP,WIN2003用户安装必须安装补丁Microsoft .NET Framework 2.0 Service Pack 2 注意是SP2补丁. 声明:本软件不得用于非法用途,非法使用本软件与软件作者无关.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值