我正在尝试创建一个测试套件,用于使用 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/