简介
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 DevTools Protocol
评论(0)