用chrome console实现自动化操作网页
因为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实现自动化操作网页的更多相关文章
- 通过chrome console 快速获取网页连接
通过chrome console 快速获取网页连接 var ip = document.getElementsByClassName("jDesc"); var str = &qu ...
- splinter python浏览器自动化操作,模拟浏览器的行为
Splinter可以非常棒的模拟浏览器的行为,Splinter提供了丰富的API,可以获取页面的信息判断当前的行为所产生的结果 最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有 ...
- chrome console的使用 : 异常和错误的处理 – Break易站
本文内容来自:chrome console的使用 : 异常和错误的处理 – Break易站 利用 Chrome DevTools 提供的工具,您可以修复引发异常的网页和在 JavaScript 中调试 ...
- 在chrome console添加jQuery支持
有时候想在chrome console使用jq,那么下面这段代码就可以完美解决问题了. var script = document.createElement('script');script.src ...
- 使用Chrome console提取页面数据
使用Chrome console提取页面数据 1.需求介绍 在做课题研究的过程中,遇到这样一个问题,有一个页面中包含很多IP地址,需要把这些IP地址提取出来保存到文件中.如下图所示: 一开始的做法是一 ...
- 利用chrome console批量下载文件
因工作需要,需要定期从某页面下载多个文档,是体力活. 想用chrome扩展,找了几个不行.原因是: 1.有的扩展识别不了链接,因为链接是形如:jsp?XXX=XXX的形式 2.有的扩展能批量打开链接, ...
- Python实训day07pm【Selenium操作网页、爬取数据-下载歌曲】
练习1-爬取歌曲列表 任务:通过两个案例,练习使用Selenium操作网页.爬取数据.使用无头模式,爬取网易云的内容. ''' 任务:通过两个案例,练习使用Selenium操作网页.爬取数据. 使用无 ...
- 利用扩展双屏技术及Chrome浏览器,高速剖析优秀网页Div及CSS构成,并高效实现原型创作
作为一个Web前台设计人员,应该充分利用可利用的硬件条件及专业的软件工具,迅速进入到高效氛围其中.实践中,我们能够利用扩展桌面双屏技术及Chrome浏览器高速剖析优秀网页Div及CSS构成,并高速实现 ...
- chrome console 调试xpath
chrome console F12->$x(“//title”) [<title>Online Tools for Software Developers (Free)</t ...
随机推荐
- Python笔记003-字符串(1)
1. 字符串基本特点 很多人初学编程时,总是担心自己数学不行,潜意识里认为数学好才能更好编程.但实际上,大多数程序员打交道最多的是 “ 字符串 ” 而不是 “ 数字 ”.因为,编程时用来解决现实问题的 ...
- prometheus+grafana监控nginx
被监控机器环境搭建&配置 nginx-module-vts下载: https://github.com/vozlt/nginx-module-vts nginx-module-vts安装 un ...
- redis字符串类型的基本命令
1.redis字符串类型键的设置 命令名称:SET 语法:set key value [EX seconds] [PX milliseconds] [NX|XX] 功能:给一个key添加字符串类型的值 ...
- Linux 截取日志命令
1.截取时间段 截取 2019-06-25 10:10 到 2019-06-25 10:20 之间的日志记录,apollo-service.log 为你要截取的文件名称, new2.log 截取之后保 ...
- Java RadixSort
Java RadixSort /** * <html> * <body> * <P> Copyright 1994-2018 JasonInternational ...
- 跨站脚本攻击XSS(二)——session劫持
转载自:http://www.cnblogs.com/dolphinX/p/3403027.html 在跨站脚本攻击XSS中简单介绍了XSS的原理及一个利用XSS盗取存在cookie中用户名和密码的小 ...
- TCP协议和UDP协议的对比【转】
原文:https://blog.csdn.net/lzj2504476514/article/details/81454754 一.TCP协议的主要特点(1)TCP是面向连接的运输层协议:(2)每一条 ...
- 二、eureka服务端注册服务
所有文章 https://www.cnblogs.com/lay2017/p/11908715.html 正文 入口 上文我们说到,eureka是使用jersey来对外提供restful风格的rpc调 ...
- /sockjs-node/info 报错问题
首先 sockjs-node 确实是维持全双工通信用的,关键在于为什么要有这个东西,其实其作用就是保证我们在改完代码重新编译之后,能够通知浏览器重新加载变更结果(我也是因为之前都可以改完代码之后浏览器 ...
- openssh升级
转载:(感谢作者) centos7 升级openssh到openssh-8.0p1版本 https://www.cnblogs.com/nmap/p/10779658.html centos 7 op ...