简介

Chrome.ahk 是一个操控谷歌 Chrome、微软 Edge、百分浏览器等基于 Chromium 内核的浏览器的库。此库原作者是G33kDude,优化版作者是Telppa,而我的版本是权衡易用性和功能整合所制作的优化版。

简化后的使用方法就两步:

1、下载定制简化的百分浏览器和本文底部的示例整合包,分别解压后运行。

2、根据自己的需求编辑脚本修改,整合包内的 Chrome库汇总整理示例.ahk,来实现属于自己需要的网页自动化。

PS:整合的Chrome.ahk库加入了对微软 Edge 浏览器的支持,对系统自带的Edge,需要Win10或Win11版本在20H2以上,就能免安装额外浏览器直接使用。但是为了统一说明,本站教程将用本站定制的百分浏览器来做说明演示。

 

Chrome.ahk库+示例整合包下载:

整合包应用示例包括更多用法示例,例如:刷新当前网页模拟键盘输出或者文字输出提取URL或标题网页另存为清理Cookie等等。后续也会更新更具体的实战示例,方便大家运用这些示例,组合出实现自己需求的脚本来。

 

关于从其它帖子示例看此贴的报错说明解决方法

当你运行别的Chrome库示例时,报了下图这个错误。

需要将此贴Chrome.ahk库+示例整合包里的 "Lib" 文件夹与示例放在同一目录下使用即可正常运行。

正确运行的解决方法图示

这样将示例与Lib文件夹里的Chrome.ahk放在一起即可正确运行

AHK代码中#Include <Chrome>是同目录的Lib文件夹有Chrome.ahk库的意思

 

Chrome.ahk 是 AutoHotkey(AHK)脚本中一个流行的库或工具,用于通过 AutoHotkey 脚本控制 Google Chrome 浏览器。它的主要作用是通过 Chrome 的调试接口(Chrome DevTools Protocol, CDP)来实现对 Chrome 的自动化操作,比如打开网页、模拟用户操作、获取网页数据等。

Chrome.ahk适合采集网络上的数据内容,配合后台读写Excel库能高效的分类和处理采集到的数据。

 

基础使用方法和代码片段+注释:

#NoEnv
SetBatchLines -1
#Include <Chrome>

; 打开设置好的百分浏览器后,运行此脚本即可执行自动化步骤。

; 匹配已经打开并设置好的百分浏览器或其它端口开放的浏览器,如果匹配不到已打开浏览器就会新建浏览器
if (Chromes := Chrome.FindInstances())
  ; DebugPort也可填写指定端口,匹配指定浏览器
  ChromeInst := {"base": Chrome, "DebugPort": Chromes.MinIndex()}
 else
  ChromeInst := New Chrome("User_Data")

标签 := ChromeInst.GetPage()  ; 连接浏览器标签

标签.Url := "https://www.baidu.com/"  ; 打开网页
标签.WaitForLoad()  ; 等待网页加载完成


; 【XPath】点击网页中的 "换一换" 示例【 此处.click()必须加() 】
__=$x("//*[contains(text(), '换一换')]")[0].click()
Try _ := "", _ := 标签.Evaluate(__)
; 【使用Try+临时变量 是为了不在百度页面执行此代码不会报错,并检索内容】


搜索内容:="我爱ahk 我爱KMCounter"
标签.Evaluate("document.getElementById('kw').value='" 搜索内容 "'")  ; 搜索框中输入文字


标签.Evaluate("document.getElementById('su').click()")  ; 点击搜索按钮
标签.WaitForLoad()  ; 等待网页加载完成


第二条搜索结果:="document.getElementById('2').innerText"  ; 选 Copy XPath 可获取id
; 对不存在的元素进行操作会报错,因此可以用 Try 包裹住避免报错。
; 报错会导致跳出 Try 段,因此要等待某元素直至出现,需用 Loop 再包裹 Try 。
Loop {
  Try if (标签.Evaluate(第二条搜索结果).value) {
    MsgBox, % 标签.Evaluate(第二条搜索结果).value  ; 打印第二条搜索结果
    Break  ; 元素出现了则跳出 loop
  }
}

; 让 Chrome 弹一个提示框出来
标签.Evaluate("alert('Hello World!\n\n看到了吧 ahk 操控 Chrome 也是非常简单的');")

; 以下 .Call 用到的不是 JS ,而是 Chrome API 。
标签.Call("Browser.close")  ; 关闭浏览器(所有页面和标签)【视情况而使用】
标签.Disconnect()  ; 断开连接
ExitApp
Return

 

相关链接

Chrome启动命令行参数解释

ChromeAPI Keys对应键码表

浏览器内置命令 Chrome DevTools Protocol

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。