前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Playwright免登录

Playwright免登录

作者头像
赵云龙龙
发布2021-04-02 11:26:21
4.3K1
发布2021-04-02 11:26:21
举报
文章被收录于专栏:python爱好部落python爱好部落

在做自动化的时候,每次都会新打开一个browser, 于是得重新登录, 有时候登录是件麻烦且费时间的事情。 以前用webdriver的时候,先登录,存储cookie信息,下次直接带上就行了。 如果用Playwright,该怎么办呢?

我们来看命令选项,看有没有解决方案。 选项:

代码语言:javascript
复制
  -V, --version                          输出版本号
  -b, --browser <browserType>            浏览器类型
  --color-scheme <scheme>                更改主题 取值 "light" 或 "dark"
  --device <deviceName>                  模拟设备,例如  "iPhone 11"
  --geolocation <coordinates>            指定地理位置 例如 "37.819722,-122.478611"
  --lang <language>                      指定语言区域 "en-GB"
  --save-storage <filename>          保存浏览器状态到指定文件
  --load-storage <filename>              载入指定文件浏览器状态
  --proxy-server <proxy>                 指定代理服务器 例如 "http://myproxy:3128" 或 "socks5://myproxy:8080"
  --timezone <time zone>                 失去设置 例如 "Europe/Rome"
  --timeout <timeout>                    超时设置,单位毫秒 (default: "10000")
  --user-agent <ua string>               指定UA
  --viewport-size <size>                 指定浏览器像素 "1280, 720"
命令:
  open [url]                             打开URL或用-b, --browser指定浏览器
  cr [url]                               打开URL用Chromium
  ff [url]                               打开URL用Firefox
  wk [url]                               打开URL用WebKit
  codegen [options] [url]                打开页面生成代码
  screenshot [options] <url> <filename>  页面截图
  pdf [options] <url> <filename>         保存页面为pdf
  install                                确保安装必要的浏览器驱动
  help [command]                         帮助

可以看到, --save-storage与--load-storage是个非常实用的命令。 例如用下面命令访问网站并登陆,关闭浏览器时自动把cookie等浏览器信息存入hik文件中:

代码语言:javascript
复制
python -m playwright cr https://XXX.top --save-storage cway

使用时用下述命令直接调用,打开页面即为登陆状态:

代码语言:javascript
复制
python -m playwright cr https://XXX.top --load-storage cway

假如我有多个网站帐号就可以存在多个不同文件,使用时输入命令即可,文件默认储存在当前执行命令的目录

在网站录制操作的过程中也可以用--sava,例如:

代码语言:javascript
复制
python -m playwright codegen --target python -o 'login.py' https://xxx.top --save-storage cway

这样py代码中也生成了保存信息到本地的功能代码,适合于更新帐号信息,然后录制操作只用录制登陆后的页面即可,如下命令,直接读取已登陆的状态,然后就能在已登陆状态下录制:

代码语言:javascript
复制
python -m playwright codegen --target python -o 'run.py' https://xxx.top --load-storage cway

然后我们看一下录制的代码:

代码语言:javascript
复制
def run(playwright,phonenumber):
    browser = playwright.chromium.launch(headless=True)
    context = browser.new_context(storage_state="C:\\work\\gitee\\arrangevedio\\cway")

    # Open new page
    page = context.new_page()

打开保存的文件,发现里面确实存的是cookie相关字典。 运行起来会省时一些。 在这个里面做一个判断, 如果页面是我们需要直接打开的页面,即cookie没过期,就可以直接操作。 如果页面是登录页面,那么就要做一次登录操作了。 也可以读这个文件里面是否过期的字段。 如果过期,就登录一次。 在操作的时候,我们做一次录制,替换掉过期的cookie文件。 那么我们得启动一个进程了。

尝试下来,感觉还可以。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python粉丝团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档