Python selenium:使用已经打开并使用登录凭据登录的浏览器

2024-04-23 14:58:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

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

编辑:

实际上,该网站要求认证的方式如下: 首先,它要求输入用户名,然后我需要按“继续”按钮,然后它要求输入密码,输入密码后,它会向我的手机发送一条短信,我需要在进入预定页面之前输入密码。


Tags: path方法代码程序web密码driverselenium
2条回答

好吧,既然这个问题是上票的,但是我的重复问题标记不被接受,我将在这里发布same exact answer I already posted for a similar question


您可以使用^{}将cookies保存为文本文件,并在以下时间后加载:

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')

现在你已经登录了。

This was a feature request and closed as not feasible。但是,使用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")

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

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

优点是,您可以使用具有不同设置和Cookie的多个文件夹、扩展,而无需加载、卸载Cookie、安装和卸载扩展、更改设置、通过代码更改登录,因此无法获得程序中断的逻辑等,而且这比必须通过代码来完成所有操作更快。

相关问题 更多 >