利用 Powershell 编写简单的浏览器脚本

栏目: IT技术 · 发布时间: 3年前

内容简介:生活中有很多事情是低效益,重复性。比如每天上某些网站,先登录再签到打卡,比如每隔一段时间清理回收站的文件等等。一个成熟的软件工程师应该想到用软件解决他。对于这些简单的小任务,一般用脚本实现。比如Python脚本或者JavaScript脚本等等,不过还得装运行环境。如果能在电脑上直接用就好了,那么有没有呢。有,那就是基于命令行(.bat)脚本或者 Powershell 脚本(.ps1),这两个东东都是 Windows 自带运行环境的,比较方便的脚本。

生活中有很多事情是低效益,重复性。比如每天上某些网站,先登录再签到打卡,比如每隔一段时间清理回收站的文件等等。一个成熟的软件工程师应该想到用软件解决他。

对于这些简单的小任务,一般用脚本实现。比如 Python 脚本或者JavaScript脚本等等,不过还得装运行环境。如果能在电脑上直接用就好了,那么有没有呢。

有,那就是基于命令行(.bat)脚本或者 Powershell 脚本(.ps1),这两个东东都是 Windows 自带运行环境的,比较方便的脚本。

而本文的主角就是 Powershell。

PowerShell 是一种跨平台的任务自动化和配置管理框架,由命令行管理程序和脚本语言组成。 与大多数接受并返回文本的 shell 不同,PowerShell 构建在 .NET 公共语言运行时 (CLR) 的基础之上,接受并返回 .NET 对象。 这一根本上的改变引入了全新的自动化 工具 和方法。详见 Powershell官方说明

长话短说,Show me the code。

下面是一个简单的示例,我准备写一个脚本,控制 IE 浏览器打开百度,然后搜索“微软药丸”,看看专业的药丸师有什么见解。

#声明变量
#待会要用的链接
$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

#等待页面加载
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。

利用 Powershell 编写简单的浏览器脚本

输入.\Baidu.ps1,就可以执行了。

下面就是执行效果,完美~

利用 Powershell 编写简单的浏览器脚本

这只是一个简单的例子,但是麻雀虽小,五脏俱全,我想介绍的启动 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完全够用,一般还是用他。

以上。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

年入10万,17岁草根少年的网赚实战

年入10万,17岁草根少年的网赚实战

陶秋丰 / 重庆出版集团 / 2009-3 / 28.00元

《年入10万:17岁草根少年的网赚实战》以一个17岁的在校大学生的真实故事为大家讲述草根少年的网络赚钱之旅。随着网络的普及以及网上应用的日益增多,要在网络上谋生并不难,比如网上写稿、网上兼职、威客赚钱、网上开店等,然而要利用互联网赚大钱,并成就一番事业,那么创建并运营一个独立的网站就是一个绝佳的选择。本书的作者正是经历了“网上写稿一网上各类兼职一策划并创建网站一网站推广与运营一年入10万”这一过程......一起来看看 《年入10万,17岁草根少年的网赚实战》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具