因为chrome console只能访问当前页的上下文(以及chrome扩展的上下文),无法访问其他标签页面的上下文,所以局限性较大,仅适用于一些较简单的操作

经实践,可以在chrome的一个标签页的console中执行javascript,对于window.open打开的新标签页的上下文进行操作,详见情况4

情况1:页面上有多个url链接,每个url的href中包含有 XXXX 字样,想要一次全部点开

参考代码:

var a = $$("a[href*='javaScript:openFullWindowHaveBarForWFList']")
a.forEach(function(w){w.click()})

情况2:这些链接中都包含6个数字,想要提取出来并组成新的URL后,全部点开

参考代码:

var a = $$("a[href*='javaScript:openFullWindowHaveBarForWFList']")
var id =[]
a.forEach(function(i){id.push(String(i).match(/[-]{}/)[])})
id.forEach(function(j){var nw = window.open();nw.location = "http://192.168.132.80/workflow/request/ManageRequestNoForm.jsp?fromFlowDoc=&requestid=" + j +"&isrequest=0&isovertime=0&isaffirmance=&reEdit=1&seeflowdoc=0&isworkflowdoc=0&isfromtab=false";})

这里用window.open打开了新窗口,如果能获取新窗口的上下文,就可以真正实现自动化了。可惜不行。只有用chrome扩展才行。

情况3:参考上一篇文章,打开新窗口用于循环访问URL,如果URL对应的zip或DOC等,则可以实现批量下载。

参考代码:

(function () {
var aa=$("a");
var arr=[];
for(var i=;i<aa.length;i++){
if(/owner=/.test(aa[i].href)){
arr.push(aa[i].href);
}
}
var nw = window.open();
var i = ;
function op() {
console.log(arr[i]);
nw.location = arr[i];
i++;
if (i<arr.length)
setTimeout(op, );
}
op();
})();

情况4:所谓的“真正实现自动化”;如:先在新标签页中打开baidu输入关键词“美女”,提交搜索;再打开sohu在搜索框中输入“野兽”

参考:https://www.cnblogs.com/laden666666/p/5544572.html    https://www.cnblogs.com/yanggl/p/10211930.html 修改 chrome浏览器的跨域设置

然而我在chrome 77 上设置后还是没办法获取另一个标签页的上下文。

最后只能退而求其次,不跨域(因为我们通常只针对某个网站内部进行自动化操作),所以我在情况4题目上加了“所谓的”三个字

这里将情况4的任务变更为:先在新标签页中打开baidu输入关键词“美女”,提交搜索;再打开baidu搜索框输入“野兽”

可以考虑延时函数

function sleep(delay) {
for(var t = Date.now(); Date.now() - t <= delay;);
}

代码如下(确保代码在badu.com的console中执行,即保持不跨域):

var nw = window.open();
nw.location ="https://baidu.com";
(pageok = function(){
if(nw.document.getElementById('kw') != null){
//做你想做的的事
nw.document.getElementById('kw').value ="美女"; }
else{
//500毫秒轮询一次
setTimeout(pageok , )
}
})();
(pageok1 = function(){
if(nw.document.getElementById('su') != null){
//做你想做的的事
nw.document.getElementById('su').click();
setTimeout(function(){nw.document.getElementById('kw').value ="野兽"},); }
else{
//500毫秒轮询一次
setTimeout(pageok1 , )
}
})();

用chrome console实现自动化操作网页的更多相关文章

  1. 通过chrome console 快速获取网页连接

    通过chrome console 快速获取网页连接 var ip = document.getElementsByClassName("jDesc"); var str = &qu ...

  2. splinter python浏览器自动化操作,模拟浏览器的行为

    Splinter可以非常棒的模拟浏览器的行为,Splinter提供了丰富的API,可以获取页面的信息判断当前的行为所产生的结果   最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有 ...

  3. chrome console的使用 : 异常和错误的处理 – Break易站

    本文内容来自:chrome console的使用 : 异常和错误的处理 – Break易站 利用 Chrome DevTools 提供的工具,您可以修复引发异常的网页和在 JavaScript 中调试 ...

  4. 在chrome console添加jQuery支持

    有时候想在chrome console使用jq,那么下面这段代码就可以完美解决问题了. var script = document.createElement('script');script.src ...

  5. 使用Chrome console提取页面数据

    使用Chrome console提取页面数据 1.需求介绍 在做课题研究的过程中,遇到这样一个问题,有一个页面中包含很多IP地址,需要把这些IP地址提取出来保存到文件中.如下图所示: 一开始的做法是一 ...

  6. 利用chrome console批量下载文件

    因工作需要,需要定期从某页面下载多个文档,是体力活. 想用chrome扩展,找了几个不行.原因是: 1.有的扩展识别不了链接,因为链接是形如:jsp?XXX=XXX的形式 2.有的扩展能批量打开链接, ...

  7. Python实训day07pm【Selenium操作网页、爬取数据-下载歌曲】

    练习1-爬取歌曲列表 任务:通过两个案例,练习使用Selenium操作网页.爬取数据.使用无头模式,爬取网易云的内容. ''' 任务:通过两个案例,练习使用Selenium操作网页.爬取数据. 使用无 ...

  8. 利用扩展双屏技术及Chrome浏览器,高速剖析优秀网页Div及CSS构成,并高效实现原型创作

    作为一个Web前台设计人员,应该充分利用可利用的硬件条件及专业的软件工具,迅速进入到高效氛围其中.实践中,我们能够利用扩展桌面双屏技术及Chrome浏览器高速剖析优秀网页Div及CSS构成,并高速实现 ...

  9. chrome console 调试xpath

    chrome console F12->$x(“//title”) [<title>Online Tools for Software Developers (Free)</t ...

随机推荐

  1. Python习题002

    作业1:判断某一个字符串是否是小数 def is_float(string): string1 = str(string) if string1.count('.') > 1: #检测字符串小数 ...

  2. php底层源码之数组

    数组key和value的限制条件 <?php $arr = array( 1 => 'a', "1" => "b", 1.5 => &q ...

  3. mysql5.7主主(双主)复制

    在server1上操作 vi /etc/my.cnf 修改或添加下面这几行: server-id=1 log-bin=mysql-bin # 启用二进制日志 auto-increment-increm ...

  4. Linux Mysql 备份与还原

    1. 备份 cd /var/lib/mysql //进入到MySQL库目录 mysqldump -u root -p 数据库>/root/backup/数据库.sql 然后输入密码 2. 还原 ...

  5. 十二、react-reudx之@connect 摆脱redux的繁琐操作

    如果对redux的概念和用法掌握的已经不错了 那么现在react-redux会让你的操作更加的得心印手 忘记subscribe,记住reducer,action和dispatch即可     Reac ...

  6. Java Web 深入分析(7) Jetty原理解析

    1Jetty的基本架构 Jetty有一个基本的数据模型,这个模式就是handle,所有拷贝拓展的组件都被当做一个handler被添加到server中,然后由jetty统一管理. 1.1Jetty基本架 ...

  7. mini.DataGrid使用说明

    mini.DataGrid表格.实现分页加载.自定义列.单元格渲染.行编辑器.锁定列.过滤行.汇总行等功能.Extend    mini.PanelUsage <div id="dat ...

  8. Go part 5 结构体,方法与接收器

    结构体 结构体定义 结构体的定义只是一种内存布局的描述(相当于是一个模板),只有当结构体实例化时,才会真正分配内存空间 结构体是一种复合的基本类型,通过关键字 type 定义为 自定义 类型后,使结构 ...

  9. ES6 Proise 简单理解

    Promise 这是ES6中增加的一个处理异步的对象. 传统变成写异步函数的时候,经常会遇到回调套回调: Promise 是异步编程的一种解决方案,比传统的解决方案 -----回调函数和事件----- ...

  10. 安装habse

    1.下载zookeeper-3.4.5.tar.gz, hbase-0.98.6-hadoop2-bin.tar.gz 2.上传到master的 /usr/local/src/目录下,解压zookee ...