首页 > 解决方案 > 使用 selenium 存储用户名和密码的问题

问题描述

我对 python 和编程非常陌生。

我想在使用 selenium chrome web 驱动程序时保存我的用户名和密码。

我添加了一些行来填充登录页面上的字段,但它不会像我通常的 chrome 浏览器那样存储输入。

在单击“登录”之前,我还标记了复选框以将我的登录信息保存在这台计算机上,但它仍然每次都要求输入用户名和密码,以及发送到我的邮件地址的验证码。

这里的问题是,用户不应该在代码中输入用户名+密码,这样每个人都可以看到它。我宁愿让用户手动输入他们的用户名和密码,第一次仅通过 chrome web 驱动程序启动,并让他们可以检查“保存我的数据,不要在这台计算机上再次询问”。

这就是我的代码的样子:

from selenium import webdriver
import time

driver.get("https://www.easports.com/en/fifa/ultimate-team/web-app/"

time.sleep(10)

btn_login_app = driver.find_element_by_xpath("/html/body/main/div/div/div/button[1]")
btn_login_app.click()

txt_field_email = driver.find_element_by_id("email")
txt_field_email.send_keys("MYEMAIL")
txt_field_pass = driver.find_element_by_id("password")
txt_field_pass.send_keys("MYPASSWORD")
btn_login_ea = driver.find_elemnt_by_id("btnLogin")
btn_login_ea.click()

之后,网页要求我输入我的安全令牌,该令牌会发送到我的电子邮件帐户。

这就是我想要避免的。因为完成的程序只会在他们的机器上运行,所以实际保存这些数据是安全的,而不必一遍又一遍地重新输入所有内容。

标签: pythonseleniumselenium-webdriver

解决方案


我了解 OP 试图告诉他的问题。

但目前,webdrivers 被配置为始终在 NEW SESSION/NEW PROFILE 上运行。这意味着,您执行的每个实例,您总是以 NEW/FRESH 启动浏览器,因此您在之前的测试中所做的一切都不会保留。

但是,有一种方法,例如在 Chrome webdriver 上,您可以使用 selenium 功能并从本地计算机添加现有的 Chrome 配置文件。确保先在浏览器上预加载并保存凭据以手动保存。

user-data-dir在您的网络驱动程序功能上使用参数以及您的谷歌浏览器配置文件的完整路径。

例如在java中:

String chromeProfilePath = "C:\\Users\\Admin\\Local\\Google\\Chrome\\User Data";
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("user-data-dir", chromeProfilePath);
WebDriver driver = new ChromeDriver(chromeOptions);

推荐阅读