如何使用已经打开并使用登录凭据登录的浏览器

新手上路,请多包涵

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

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

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

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

编辑:

其实这个网站要求认证的方式是这样的:先要用户名,然后我要按继续键,然后要密码,输入密码后,发短信到我的手机,我需要在它进入预期页面之前输入它。

原文由 TJ1 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 630
2 个回答

好吧,由于这个问题被投票,但我的重复问题标记没有被接受,我将在这里 发布与我已经针对类似问题发布的相同的确切答案


您可以使用 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. 返回您的终端,输入任何内容并按回车键。
  4. /tmp/cookie 享受您的 cookie 文件。您现在可以将其复制到您的代码存储库中,并在需要时将其打包到您的应用程序中。

所以,现在,在您的主要应用程序代码中:

 from afile import load_cookie

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

你现在已经登录了。

原文由 Arount 发布,翻译遵循 CC BY-SA 3.0 许可协议

这是一个功能请求,因不可行而关闭。但这是一种方法,使用文件夹作为配置文件,并通过使用 Chrome 选项 user-data-dir 使所有登录在会话之间保持持久——为了将文件夹用作配置文件,我运行:

 chrome_options = Options()
chrome_options.add_argument("user-data-dir=selenium")
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("www.google.com")

您可以在此步骤中手动与打开的窗口进行交互,并进行登录以检查人机交互,检查记住密码等我这样做,然后每次我使用该文件夹启动 Webdriver 时我现在需要的登录,cookie 一切都在那里。您还可以手动安装扩展并在每个会话中使用它们。我第二次运行时,使用与上面完全相同的代码,所有设置、cookie 和登录都在那里:

 chrome_options = Options()
chrome_options.add_argument("user-data-dir=selenium")
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("www.google.com") #Now you can see  the cookies, the settings, Extensions and the logins done in the previous session are present here

优点是可以使用多个不同设置和cookies的文件夹,无需加载、卸载cookies、安装和卸载扩展程序、更改设置、通过代码更改登录,从而不会让程序逻辑中断,等等这也比必须通过代码完成所有操作要快。

原文由 Eduard Florinescu 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题