WebDriver原理及实验(vb6 (Visual Basic 6.0) 调用谷歌浏览器)

WebDriver原理及实验


研究这个的起因是因为Visual Basic 6.0(vb6)不支持谷歌浏览器的调用,网上找到的浏览器自动化VB代码,大多都是对IE的操作,而IE浏览器由于效率低下速度慢,被微软抛弃了,在IE11版以后,微软宣布不再更新IE。目前有些网站都不再支持IE浏览器,以后会有更多的网站不再支持IE。所以这个问题就越来越迫切了。现在的流行的就是B/S架构,对于办公一族,重复机械的在浏览器上录入业务数据是痛苦的,而且业务流程冗长,抓包也是麻烦(其实是我不懂抓包),直接操作浏览器可以很快完成自己的工作,速度慢不要紧,总不会比自己手动操作慢,而且大不了多上几台电脑。通过下面的实验,可以很轻松的实现VB对谷歌浏览器的操作。

1、原理及编程手册
对浏览器自动化操作,最有名的就是selenium,selenium核心就是通过webdriver去操作浏览器,webdriver是一套协议,常见的浏览器都有对应的驱动,启动相关的驱动,就可以操作相应的浏览器。本文以谷歌浏览器为例演示。
webdriver驱动程序是一个EXE文件,运行后会打开本机上指定的端口,如127.0.0.1:9515,对端口发送相关的JSON命令,就可以操作浏览器(启动浏览器时会打开调试功能,这时也可以绕过驱动直接操作浏览器,但是不方便)。相关的详细命令请看压缩包中的编程参考文档(英文版与机翻中文版),也可直接到W3C去看webdriver协议。想更多了解原理资料请参考Python的。
了解webdriver操作浏览器的原理后,用什么语言都可以操作浏览器了,不仅仅局限于vb6、python。
市面上的浏览器众多,其实所有看到的国产浏览器并不是使用国产内核,没有哪个公司会投入人力财力去开发一个浏览器内核,投入了也不一定能成功。webdriver驱动支持IE、谷歌、火狐、edge,命令都一样。
增加内容:这段时间碰到一些网友和我交流,说不喜欢用webdriver驱动程序,这样还得带上一个exe文件,而且还要与浏览器版本匹配,很麻烦,其实webdriver驱动程序的基础是调用了CDP协议,如不想带上这个驱动,可以自己直接去使用CDP协议(参考:https://chromedevtools.github.io/devtools-protocol/)。
原理就是以调试在打开浏览器的时候,浏览器会开WS服务,然后通过 WebSocket 连接用来发送 CDP 指令(基于 JSONRPC),这样就可以操作浏览器了。由于VB6本身不支持WS协议,也没有JSON库,所以还得自己做轮子,虽然网上有WS、JSON的例子,但是没有纯代码的轮子、测试了一下,不是很理想。我就懒得弄了,想做的网友可以自己去做一个。

2、实验
2.1、准备工作
a、如果没有浏览器,需要下载浏览器,对应的版本的驱动,在70版之前,需要查询版本对应表,之后可以按版本号下载驱动。
下载地址: http://chromedriver.storage.googleapis.com/index.html
由于众所周知的原因,为大家提供一个驱动备选地址:http://npm.taobao.org/mirrors/chromedriver
b、需要一个postman工具,这种类似的工具极其多,自己找找,或者去下载我写的vb版postman源码。

将下载的chromedriver.exe放到浏览器安装目录下,也就是与chrome.exe同一目录(如果是安装版,不需要同一目录,如果浏览器是绿色版,一定要这样)

早期部分版本对应表(在驱动包中有对应版本的文档介绍)
在这里插入图片描述

2.2 启动浏览器实验。
需要知道的一些常识,在这里一个sessionId对应一个chrome浏览器的实例,window对应chrome浏览器实例中的一个标签页。
查询编程手册,可以看到介绍
在这里插入图片描述

这里的session命令就是创建一个浏览器实例,成功后会返回一个ID,POST一次就会创建一个浏览器实例,在日常操作中我们一般只需要创建一个实例,然后用这个实例打开很多网页,也叫标签页,标签页在手册中对应的命令是window(窗口)

a、启动驱动
双击chromedriver.exe或者用命令行执行chromedriver.exe都行,成功后如图:
在这里插入图片描述
2.45.615291是驱动版本号,port9515是端口号,(ec36.。。。。。。。387)是ws地址

b、启动浏览器
启动软件postman,对地址HTTP://127.0.0.1:9515发送(post)下面的JSON数据,就可以打开浏览器,同时返回一串JSON数据,如"sessionId":“3cbbff678818267ef0089dc66f127235”,其中重要的是sessionId,对浏览器后续操作都要用到这个sessionId。
如果想要匹配当前已经打开的浏览器(在chromeOptions中设置)、或者是使用无界面(无头)模式、模拟成移动设备等等都在这一步实现,只需要构造相关的JSON参数就可以了。
POSTMAN请求:
请求方式 :POST
请求地址 :http://localhost:9515/session
请求JSON 如下:

{
   "desiredCapabilities": {
      "browserName": "chrome",
      "javascriptEnabled": true,
      "platform": "ANY",
      "version": ""
   }
}

浏览器打开后如下图:
在这里插入图片描述
()
c、打开网页

打开一个网页,注意,需要用到刚刚获得的sessionId(“sessionId”:“3cbbff678818267ef0089dc66f127235”)
请求方式 :POST
请求地址 :http://localhost:9515/session/:sessionId/url
请求JSON 如下:

{
      " url ":  " https://www.toutiao.com/",
      " sessionId ": "3cbbff678818267ef0089dc66f127235"
}

提交请求后,结果
在这里插入图片描述
网页成功打开。

网页元素定位方式很灵活,提供以下几种方式
class name 、css 选择器、元素id 、name 、tag name 、xpath
用xpath定位元素的JSON例子(百度的)
在这里插入图片描述
大家可以去这里下载我的源码压缩包,压缩包中有详细的命令解析(英文版与机翻中文版),代码演示的功能:打开百度、搜索mp3,获得网页源码,获得网页标题,网页截图,获得cookie。
早期我发布了《vb6操作谷歌浏览器源码.rar》,下载了这个版本的网友,可以免积分向我索取新版本,在早期的版本中评分回复留下邮箱地址即可,下载这个版本的网页也可以评分回复留下联系方式,这样如果以后发布的代码中增加了新功能,就可以同时给你邮箱发一份了。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值