python - 身份验证 cookie 不能与 selenium chromedriver 重用
问题描述
我正在使用 selenium 3.141.0 和 chromedriver 86.0.4240.22 登录网站,存储 cookie。在下一次会话期间,我希望使用现有的 cookie 来防止再次登录。但是,它不起作用。一切似乎都运行良好,但网站https://primexbt.com没有确认现有的 cookie。我能做些什么?
options = Options()
options.add_argument('--dns-prefetch-disable')
options.add_argument('--no-sandbox')
options.add_argument('--lang=en-US')
options.add_argument('--disable-setuid-sandbox')
chrome_prefs = {
'intl.accept_languages': 'en-US',
}
options.add_experimental_option('prefs', chrome_prefs)
self.driver = webdriver.Chrome(options=options)
# load cookies
cookies = get_cookies()
if cookies:
self.driver.get(self.URL_PRIMEXBT)
for cookie in cookies:
self.driver.add_cookie(cookie)
解决方案
默认情况下 - 一个新的 ChromeDriver 会话会创建一个新的配置文件数据目录 - 因此您没有上一个会话的 cookie。我建议:
- 使用包含您的授权 cookie 的配置文件数据启动 WebDriver
options.add_argument('user-data-dir')
- 通过直接 http 调用/API 调用进行授权,绕过 WebDriver(以加快测试速度) - 并将响应 cookie 传递给 WebDriver
- 或存储授权 cookie 并加载它们 - 例如使用此解决方案: 如何使用 Python + Selenium WebDriver 保存和加载 cookie
推荐阅读
- docker - 使用 gcsfuse-mounted Bucket 中的数据在 Google Cloud 实例上运行 Docker
- r - 构建“R Packages”一书时Windows系统调用失败
- python - 如何从可训练的张量流变量转换为不可训练的张量流变量?
- java - Java junit 断言已引发异常
- stm32 - 关于 FreeRTOS 如何在 STM32 平台上排队任务的一些困惑
- ios - 为什么 armv7s / arm64e 架构不增加封装大小?
- java - 将流中的列表附加到地图
- tensorflow - 组合多个张量流数据集?
- android - Cancel all Kotlin coroutines pending jobs on ViewModel's onCleared()
- angular - 在角度中找不到命名空间