对于使用selenium的python程序的不同运行,有没有一种方法可以让我使用凭据打开并登录的浏览器在以后的运行中打开并使用?

我正在调试一个代码.每次我需要使用凭据登录时,都会在浏览器上显示.目前,每次我停止代码时,web浏览器都会关闭.有没有办法让我已经打开并登录的浏览器的副本保持打开状态,并在以后的调试中使用它,这样每次我都不需要再次输入登录凭据?

我打开浏览器的代码如下所示:

driver = webdriver.Chrome(executable_path="/the_path/chromedriver", chrome_options=chrome_options) 
driver.get(url)

EDIT:

实际上,该网站要求认证的方式如下:

推荐答案

好吧,因为这个问题是向上投票的,但我的旗帜作为重复问题没有被接受,我将在这里发布same exact answer I already posted for a similar question:


您可以使用pickle将Cookie保存为文本文件,并在以下情况下加载:

def save_cookie(driver, path):
    with open(path, 'wb') as filehandler:
        pickle.dump(driver.get_cookies(), filehandler)

def load_cookie(driver, path):
     with open(path, 'rb') as cookiesfile:
         cookies = pickle.load(cookiesfile)
         for cookie in cookies:
             driver.add_cookie(cookie)

脚本如下:

from selenium import webdriver
from afile import save_cookie

driver = webdriver.Chrome()
driver.get('http://website.internets')

foo = input()

save_cookie(driver, '/tmp/cookie')

你能做的是:

  1. 运行这个脚本
  2. 在(selenium的)浏览器上,转到网站,登录
  3. 返回终端,键入任何内容,然后按enter键.
  4. 享受你/tmp/cookie岁时的cookies 档案.你现在可以将其复制到你的代码repo中,并在需要时将其打包到你的应用程序中.

现在,在你的主要应用程序代码中:

from afile import load_cookie

driver = webdriver.Chrome()
load_cookie(driver, 'path/to/cookie')

您现在已登录.

Python-3.x相关问答推荐

一种基于绝对排序值的极框索引和列定位的Python方法

我的SELECT函数搜索的是列,而不是列中的数据.我怎么才能让它搜索数据呢?

泛型类型的参数的静态类型

从Metacritic上通过网络擦除游戏数据的问题

selenium 无法执行网站上最简单的功能

Pytest顺序测试A,然后测试B,然后再测试A

我正在使用 python 线程,当查询 mysql 时,代码似乎在运行并保持在无限循环中,没有返回任何错误

无法理解此递归函数的分配和环境用法

如何知道Pandas 列中的每个后续值是否都大于前面的值? Python相关

用于 BIG 数组计算的多处理池映射比预期的要慢

使用正确的数据类型时,使用 Cerberus 验证 JSON 架构会引发错误

在python中循环处理时并行写入文件

Pandas 将列格式化为货币

无法在 macOS 上的 Anaconda3 python3.6 上安装 OpenCV3

在两个数据框之间查找相等的列

pip install dryscrape 失败并显示错误:[Errno 2] 没有这样的文件或目录:'src/webkit_server'?

导入 python 模块而不实际执行它

Python3 的超级和理解-> TypeError?

在 Python 3 中调用 super() 的 4 种方法中的哪一种?

无法解码 Python Web 请求