利用 Powershell 编写简单的浏览器脚本
生活中有很多事情是低效益,重复性。比如每天上某些网站,先登录再签到打卡,比如每隔一段时间清理回收站的文件等等。一个成熟的软件工程师应该想到用软件解决他。
对于这些简单的小任务,一般用脚本实现。比如Python脚本或者JavaScript脚本等等,不过还得装运行环境。如果能在电脑上直接用就好了,那么有没有呢。
有,那就是基于命令行(.bat)脚本或者 Powershell 脚本(.ps1),这两个东东都是 Windows 自带运行环境的,比较方便的脚本。
而本文的主角就是 Powershell。
PowerShell 是一种跨平台的任务自动化和配置管理框架,由命令行管理程序和脚本语言组成。 与大多数接受并返回文本的 shell 不同,PowerShell 构建在 .NET 公共语言运行时 (CLR) 的基础之上,接受并返回 .NET 对象。 这一根本上的改变引入了全新的自动化工具和方法。详见 Powershell官方说明
长话短说,Show me the code。
下面是一个简单的示例,我准备写一个脚本,控制 IE 浏览器打开百度,然后搜索“微软药丸”,看看专业的药丸师有什么见解。
#输入url
$Url = "http://baidu.com" $Keyword = "微软药丸" #创建一个IE对象
$IE = New-Object -com internetexplorer.application
$IE.visible = $true #导航到URL
$IE.navigate($url); #等待完全加载
while ($IE.Busy -eq $true) {
Start-Sleep -s 1
Write-Host "wait for loading..." -ForegroundColor Gray
} #在Console 打印 Log
Write-Host "Enter Baidu Main Page" -ForegroundColor Cyan #输入关键词
$IE.Document.getElementById("kw").value = $Keyword #在按钮上执行点击事件
$IE.Document.getElementById("su").Click()
Write-Host "Submit keyword" -ForegroundColor Cyan
start-sleep -milliseconds 500
Write-Host "Entering Selfservice/Dinner" -ForegroundColor Cyan #等待页面加载
while ($IE.Busy -eq $true) {
Write-Host "wait for loading..." -ForegroundColor Gray
Start-Sleep -s 1
} #没有意义的等待延时,就是任性一下
Start-Sleep -s 1 Write-Host "Bye!" -ForegroundColor Cyan
在记事本输入这些代码,保存为 Baidu.ps1 文件。
在文件所在目录按住SHIFT键,在当前目录启动 Powershell。

输入.\Baidu.ps1,就可以执行了。
下面就是执行效果,完美~

这只是一个简单的例子,但是麻雀虽小,五脏俱全,我想介绍的启动 IE,输入文本,模拟点击,输出Log 都用到了。
你也可以用他来登录某些网站进行签到,领奖,打卡等等,思路是一样的。总之浏览器能做的事情都可以将其程序自动化。
这个时候你或许会觉得,哎,我每次都用手动执行脚本,那也不省事呀。能不能每天领一次奖呢?
Absolutely,下回我们简单介绍一下如何用“Windows任务计划”把脚本安排得明明白白。
========================== PS ===================================
1.Powershell的相关文章里面,通过IE获取元素一般写的是
$IE.Document.getElementById("kw")
本文也是,这个东西一般没啥问题,但是真出问题你就头疼,比如在Win10环境中我需要获取的某个Button元素一直找不到,然后还搜不到原因,一度没法使用。
但是最终在文档找到 了 IE 的全新 COM接口
$IE.Document.IHTMLDocument3_getElementById("kw")
如果执行脚本时发现类似下面这样的错误,搜百度也解决不了,那么请试试使用新的API。
Exception from HRESULT: 0x800A138A
At <path>.ps1:
char:5
+ $IE.Document.getElementsByID("kw").Click();
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ CategoryInfo : OperationStopped: (:) [], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
由于Powershell是通过COM接口去控制IE的,所以这个问题时 IE 浏览器的锅。因为它是预装的,而且IE11完全够用,一般还是用他。
以上。
利用 Powershell 编写简单的浏览器脚本的更多相关文章
- Python 利用Python编写简单网络爬虫实例3
利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站“http://bbs.51testing. ...
- Python 利用Python编写简单网络爬虫实例2
利用Python编写简单网络爬虫实例2 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站“http://www.51testing. ...
- ROS Learning-010 beginner_Tutorials 编写简单的启动脚本文件(.launch 文件)
ROS Indigo beginner_Tutorials-09 编写简单的启动脚本文件 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14.0 ...
- 编写简单的辅助脚本来在 Google 表格上记账
我的第二份工作入职在即,而这一次则真的是完全跑到了一个陌生的城市了.租房,购置相关用品,还尚未工作钱就花掉一堆.尽管我个人之前一直都没有过记账的习惯,但为了让自己能够搞清楚自己的钱都花在哪里了,于是还 ...
- 利用java编写的盲注脚本
之前在网上见到一个盲注的题目,正好闲来无事,便用java写了个盲注脚本,并记录下过程中的坑 题目源码: <?php header("Content-Type: text/html;ch ...
- 小鸟初学Shell编程(二)编写简单的Shell脚本
Shell脚本 编写Python.PHP脚本通常需要掌握语言的函数,那么Shell脚本则不需要,只需要掌握Linux命令就可以编写Shell脚本,因为Shell脚本就是由多个Linux命令组成,通过将 ...
- (八) .launch文件 ---编写简单的启动脚本文件
下面我们将介绍,如何编写一个启动脚本程序:(.launch文件) 还记得我们在 创建ROS软件包教程 中创建的第一个程序包(beginner_tutorials)吗,现在我们要使用它. 在 begin ...
- 利用Java编写简单的WebService实例
使用Axis编写WebService比較简单,就我的理解,WebService的实现代码和编写Java代码事实上没有什么差别,主要是将哪些Java类公布为WebService. 以下是一个从编写測试样 ...
- 利用Java编写简单的WebService实例-转载
使用Axis编写WebService比较简单,就我的理解,WebService的实现代码和编写Java代码其实没有什么区别,主要是将哪些Java类发布为WebService.下面是一个从编写测试例子到 ...
随机推荐
- DFS序--一般都要转化为顶点到每个点
There is a rooted tree with n nodes, number from 1-n. Root’s number is 1.Each node has a value ai. I ...
- 愉快地使用Windows Terminal
有了Windows Terminal 你再也不需要其他任何终端了-- 下载 直接到Windows 10 自带的应用商店下载安装.参考: https://github.com/Microsoft/Ter ...
- Python - 常用的PyCharm的快捷键和使用场景介绍
关于PyCharm的快捷键,由于数量众多,差不多有100个,相信几乎没有人会记住所有,每个人都会有自己顺手的几个,这里我将自己用着顺手,不别扭的快捷键分享出来,同时分享在哪里可以找到所有的快捷键. 一 ...
- vue-cli中的index.html ,main.js , App.vue的关系
###发现不少小伙伴才刚开始接触到这个结构都被绕的迷糊,而发现很多人说的也不是那么准确,那么下面我来说一下是怎么回事### 1.首先我们来看看原生Vue中组件的写法, 我们按照vue-cli的结构按照 ...
- C#用Linq对列表/集合进查询
namespace ---> System.Linq; 使用&&进行多条件查询 也可以直接使用Lambda表达式+扩展方法的写法:
- Linux部分场景非常有用的命令集1_chattr&ldd&xargs&screen&ssh&磁盘&du
这里不做详细说明或截图,仅作为记录和简单说明.注:可能只针对某一命令部分功能,不包含整个功能,若要查看全部请自行查阅文档或help 1.chattr 当某一文件或目录,不想被无意修改或删除(即使roo ...
- 第 7 篇:文章详情的 API 接口
作者:HelloGitHub-追梦人物 一旦我们使用了视图集,并实现了 HTTP 请求对应的 action 方法(对应规则的说明见 使用视图集简化代码),将其在路由器中注册后,django-restf ...
- 第一次写js轮播图
仿小米首页轮播图(注意事项) 布局部分 1.用ul包裹li再包裹a的形式来装图片,建立focus类: <div class="focus"> <ul> &l ...
- 【Python】基础总结
输入 input("提示性信息") 如: input("请输入数字") 评估函数 因为 Python 没有特别人为规定数据类型,数据类型是由计算机进行判定,所以 ...
- js函数中的this关键字
关于这个this关键字,也是很多项目中常常被用到的,那么,有人也许会问,干嘛要用this呢,在函数被调用时,直接指明是什么对象在调用不就行了?还整那么个模模糊糊的概念出来干嘛?不过嘛,存在即真理,既然 ...