使用python实现一个浏览器自动化的脚本

背景

最近工作中有这样一个需求:客户反馈在浏览器操作过程中,重复流程操作太频繁,能不能让浏览器自动操作完成?

在我的认知中,浏览器就是一个用来浏览页面的工具,因此第一反应就是“不可能!绝对不可能!”。领导说,你了解过RPA吗?会后专门查阅了相关资料,在我的理解中,RPA就是一个定制化机器人(脚本流程),通过控制脚本操作显示器,来模拟用户操作的过程。

开始

一开始的时候,我在github上面找了一些开源的项目,例如:PyRPA、RPA-Python、TagUI、openrpa等,但是因为定制化比较强,后期不知道会变成怎么样,因此做的要灵活一些。但是在这些开源项目中,提供了一部分的api,但是在有些地方并不是很容易操作,感觉后面可能会不可控。

但是在我观察中发现,大多数的实现都是通过python实现的,作为一个前端,第一反应就是,为什么不用node和js结合呢,最后反应过来,使用python可以操作整个PC,但是如果你使用node或js,只能说操作浏览器更方便一些了(其实和python差不多),只是python在使用第三方库时候,会存在一定程度的延时。

因此,我决定放弃现有的RPA的项目,自己实现一个自动化的python脚本。

语言选择

关于我为什么选择的python作为语言,其实在前面已经说过了,作为一个前端开发,其实最熟悉的莫过于javascript,另加一些nodejs,那么为什么我没有用nodejs呢?node在前端开发过程中,常常扮演着一个环境的角色,虽然也可以作为一个后端语言来写一些接口或服务(依赖于第三方库),但是很少用到DOM的操作,操作浏览器的DOM,我们通常来说,都是使用js直接操作,或使用jquery等第三方工具。如果要再直接去拦截系统的一些操作,js就不太行了。

因此,采取了python,这一门热度一直很高的语言。主要思路就是,图片的对比,获取点位,模拟用户鼠标,键盘等操作。

浏览器的启动

其实这个启动浏览器,一开始我只是单纯的打开浏览器,但是后面发现,每天第一次启动的时候,都会特别慢,查阅资料也没有找到原因,好像是缓存被清空了吧,网上找了大量的相关资料,最终找到了一个方案:加载时候启动指定驱动程序(浏览器版本驱动程序需要对应),指定版本浏览器下载新版驱动下载114版本前驱动下载,有一部分页面需要科学上网才能访问与下载,建议大家科学上网昂。

一个启动浏览器的demo,这里的driver我在后续就不就行重复的定义了,直接使用了,例如:

1

2

3

4

5

6

7

from selenium import webdriver

from selenium.webdriver.chrome.service import Service

driver = webdriver.Chrome(service=Service(r"C:\\tb2Lot\\driver\\chromedriver.exe"))

driver.maximize_window()

driver.execute_script("document.charset='utf-8';")

driver.get("http://www.baidu.com")

这时候我们就已经可以打开浏览器,并操作浏览器调取到百度的页面了,我们想在百度的页面输入并搜索指定内容怎么办呢?这时候我们就需要获取页面的元素节点,然后进行输入了,下面我们来看一下如何在浏览器搜索吧!

在百度进行搜索的方案

首先我们先列举一下目前能够想到的两个方案:

  • 从页面抓取页面元素路径,然后直接点击元素;
  • 整个页面截图,再截取需要点击的小图片,获取需要点击的图片的坐标,点击坐标;

这两种方案对于简单的操作都是可行的,复杂一些的,会出现一些问题,我们先看一下两种方案分别怎么进行操作,然后再来分析一下会遇见怎样的问题吧!

页面抓取元素,直接点击:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值