文章目录
前言:如果你接触到的系统是浏览器的形式打开的话,而且你又是经常跟系统做交互的话,那你千万要继续往下看。对于普通用户而言,可能只需要了解人工的交互就行了,不过作为系统背后的工作人员,不管是做前后端开发、测试、运维或其他,如果都是靠着人工的方式去进行操作,那效率肯定是非常低的。举个最近发生小例子最近我开发了一个自动化python工具就帮运维人员足足节省了手动刷数据两三天的时间。
下面我将讲一下几种模拟浏览器行为的思路供大家选择。(按照 由复杂到简单的顺序)
一、模拟用户的行为
用户跟浏览器直接交互无非就是输入网页地址,输入用户,输入密码,输入验证码,点击某些按钮等等
1.1 如果你喜欢偏极客操作
我建议是通过python来实现,借助一些现有的一些库来实现,废话不多说,直接看操作步骤:
-
安装浏览器驱动扩展(一般我是使用Chrome浏览器),这里需要注意使用对应浏览器版本的扩展 → chrome扩展下载地址
-
下载后解压,将chromedriver.exe复制到python目录下的Scripts文件夹内这样就可以直接使用,不过我喜欢放在我的浏览器路径下面用的使用再去指定路径,因为有可能电脑安装了多个版本的浏览器这样就做到代码和驱动扩展的
解耦
-
cmd执行:
python -m pip install selenium
-
编写python代码,这块涉及的内容就需要根据你们所需要的场景和系统的情况进行对应学习和了解,像获取cookie,防止爬虫检测,验证码图片识别等等,这里我简单编搭个架子供大家参考
from selenium import webdriver import os if __name__ == '__main__': chromedriver = "C:/Users/DreamKite/AppData/Local/Google/Chrome/Application/chromedriver" os.environ["webdriver.chrome.driver"] = chromedriver driver = webdriver.Chrome(chromedriver) #模拟打开浏览器 print('cookies:', driver.get_cookies()) driver.get("https://www.baidu.com/") #打开网址 driver.maximize_window() #窗口最大化(无关紧要哈) # 做各种找元素、按钮进行点击输入的代码编写~~ # driver.quit()```
1.2 如果你还会前端语言
这块就简单了,不过这里可能没法直接跟浏览器交互,需要依附浏览器,不过也问题不大
我们利用浏览器跟系统做交互一般是用到一种动态前端语言,一般是js
这里我简单编搭个架子供大家参考(自动填写密码进行登录)
javascript:(function() {
var username = document.getElementById("username");
var pwd = document.getElementById("value");
if(null == username || null == pwd){
console.log("no found!!")
return;
}
username.value = "DreamKite";
pwd.value = "iamapasswd";
var loginButten = document.getElementById("submitId");
loginButten.click();
})();
这里可能有人就在想,这里放在哪里执行,我理解console也是可以的,这种一般我是做成"插件",通过收藏添加书签的方式(网页形式),这样我只要这么轻轻一点我创建的书签,就可以实现自动输入用户密码登录的操作了~
二、模拟系统的接口1.0
模拟浏览器,其实就利用了前端的代码替代了用户直接跟后端交互,在当前微服务架构比较流行的情况,如果不是涉及非常复杂的前端操作往往我们是可以绕过前台直接跟后台的服务做交互的,我们这里需要用到一点点前端小技巧,也是非常的简单,上操作:
2.1 前端获取跟服务的交互接口
输入网页地址-》F12 -》点击Network-》Fetch/XHR-》F5刷新-》选择跳出来的接口,点击一下这样你就获取到所有该请求的所有信息
如下图:
2.2 下载一个postman的工具软件
比较常规的操作就是新建一个调用请求,然后输入url/header/body,选择接口类型,部分安全要求比较高的还需要进行证书、秘钥的导入(在File→Settings→Certificates),就这么简单
这里需要讲一下为什么使用postman软件而不是用浏览器呢,因为postman的操作更加灵活,而且还能diy(例如加载某个json文件进行接口调用,需要调用,进行性能测试),而且还做到跟浏览器的解耦
2.3 下面讲授一波骚操作: 复制粘贴大法
Ctrl+C:
Ctrl+V:
然后就替代了手动的那些繁琐的操作了,懂的都懂~~
三、模拟系统的接口2.0(代码自动生成!!)
因为大部分场景都是涉及到接口调用,因此有种方法能够实现对接口的入参、header这些能够自动化处理,那就不需要写繁琐的代码去做这种无聊的事情了
步骤一: 同2.3的复制操作
步骤二:上链接:https://curlconverter.com/ , 粘贴
然后代码就来了
上面这种操作非常有效,因为我们通过代码的方式进行可以做到更加灵活,实现更复杂的事情,例如:调用接口获取到的数据重组织去调用另外一个接口等等
个人的话喜欢使用python,因为效率更高,操作也更加灵活~
(以上为DreamKite本人原创,转载请附上原文链接)
以上是我编写开发生活
栏目的第一篇博客,后续还会陆续推出旨在能提高“开发幸福感”的博客,欢迎大家关注我和在评论区进行交流~