python - 我们如何使用本地 Chrome 的 cookie 来使用 Selenium 登录?

标签 python google-chrome selenium cookies webdriver

我正在尝试创建一个测试套件,用于使用 Selenium 登录 Google 的 Gmail 网站。 问题是 Selenium 打开了一个没有 cookie 的新 Chrome 窗口(如隐身模式)。 我的代码:

driver = webdriver.Chrome(executable_path=r'chromedriver.exe')
driver.get("https://hangouts.google.com/")

elem = driver.find_element_by_id("gb_70")
elem.send_keys(Keys.RETURN)

elem2 = driver.find_element_by_id("identifierId")
elem2.send_keys("mygmail@gmail.com")
elem2.send_keys(Keys.RETURN)
time.sleep(2)

elem3 = driver.find_element_by_xpath("//*[@class='whsOnd zHQkBf']")
elem3.send_keys("myPass")
elem3.send_keys(Keys.RETURN)

根据我在 Internet 上阅读的内容,可以创建 2 个 session ,一个用于存储 cookie,第二个用于使用这些 cookie。 但这不是我要找的东西,我需要它来使用 Chrome 存储的 cookie。

我尝试手动读取 Chrome 的 cookie(从 APPDATA),但它似乎已被浏览器加密。

最佳答案

当您需要从一个 session 到另一个 session 的 cookie 时,还有另一种方法可以做到这一点,使用 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,所有内容都在其中。您还可以手动安装扩展并在每个 session 中使用它们。 第二次运行时,所有的 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, Extensions而无需通过代码加载、卸载cookies、安装和卸载Extensions、更改设置、更改登录等,从而没有办法拥有逻辑程序中断等这也比必须通过代码完成所有操作要快。

关于python - 我们如何使用本地 Chrome 的 cookie 来使用 Selenium 登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48869775/

相关文章:

javascript - 更改 window.location.hash 在历史记录中创建条目但不影响 chrome 后退按钮

java - 每个页面测试初始化​​一个对象是一种好习惯吗?

selenium - 如何访问 PHPUnit_Extensions_SeleniumTestCase 中的存储值

Python:subprocess.call 破管

python - 如何获取 Pandas df.merge() 不匹配的列名

python - 使用python测量网站的深度

selenium - 即使在 WebDriverException session 失败后,Chrome 浏览窗口仍保持打开状态

python - 当 Canvas 放在框架内时,Tkinter 不会在 Canvas 上显示图片

html - 文件浏览器访问 Chrome 的沙盒文件系统

python-3.x - 如何使用selenium重新连接到webdriver打开的浏览器?