selenium复用打开的浏览器/使用cookie免登陆

一,背景

   在进行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格式如下图:

你可能感兴趣的:(selenium复用打开的浏览器/使用cookie免登陆)