一,背景
在进行UI自动化的过程中,比如要测试企业微信的功能,首先需要登录的,但是登录需要扫码,扫码的过程无法进行自动化。
此时有两个解决办法:
1)先登录了企业微信之后,复用已打开的浏览器页面进行想要的操作。
2)或者可以拿到登录后的cookie,然后把失效字段给去掉,把处理后的cookie加到driver的cookie里,刷新页面就可以了。
二,复用打开的浏览器
(一)前提条件:
1.首先需要把Chrome配置到环境变量里;
ps:这里需要把Chrome浏览器安装运行的路径配置到系统环境path下(不是下载下来的chromedriver路径),配置成功后,用cmd输入chrome就能打开新的浏览器;
2.把Chrome浏览器关闭包括进程等都杀掉
3.在命令行输入对应命令打开一个浏览器
Windows/Linux命令为:chrome --remote-debugging-port=9222 (9222为端口号,可以换成任意一个没有被占用的端口)
Mac命令为:Google\ Chrome --remote-debugging-port=9222 (9222为端口号,可以换成任意一个没有被占用的端口) (注意命令中间的反斜线)
4.在命令行打开的浏览器中打开企业微信,等扫码登录成功
(二)代码编写:
三,获取登录后的cookie,把处理后的cookie加到driver的cookie里
(一)预先准备:
1.我们首先要知道我们能添加进driver的cookie格式是什么:
我们直接查看add_cookie()的源码,可查看到格式:
(二) 前提条件:
1.打开一个浏览器,登录成功后,把cookie复制出来:
2,把复制出来的cookie放在一个文本里,这样下次就可以直接读文件内容,实现免登陆(我这里是放在了yaml文件)
3.对读出来的yaml文件内容做处理,把它转化为对应的需要的cookie格式(预先准备那里我们看到的格式)
4.最后我们测试一下,运行之后发现确实免登陆:
我们添加进driver的cookie格式如下图: