python - 使用 Selenium 时如何保持 Firefox 的登录状态?
问题描述
我想在使用 Selenium WebDriver (geckodriver) 时保持 Firefox 登录状态。我使用了下面的python代码:
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
import time
try:
fp = webdriver.FirefoxProfile('C:/Users/admin/AppData/Roaming/Mozilla/Firefox/Profiles/mow8ff69.selenium')
options = Options()
options.headless = False
browser = webdriver.Firefox(fp, options=options)
browser.get('https://stackoverflow.com/users/login');
time.sleep(2)
txt_username = browser.find_element_by_id('email')
txt_username.clear()
txt_username.send_keys('***@gmail.com') #replace with your own username
time.sleep(1)
txt_password = browser.find_element_by_id('password')
txt_password.clear()
txt_password.send_keys('*****') #replace with your own password
time.sleep(1)
txt_password.submit()
time.sleep(10)
except Exception as ex:
print('Error: {0}'.format(ex))
finally:
browser.quit()
如上所示,我一直在使用“Firefox -p”创建的用户配置文件。但是,在运行上述代码之后,当我使用该配置文件重新打开 Firefox 然后转到 stackoverflow.com 时,我仍然没有登录。
所以看起来 Selinum WebDriver 实际上在一个“沙箱”中运行 firefox,它根本无法写入用户配置文件?我知道 ChromeDriver 有一个“--no-sandbox”选项,但它似乎在 geckodriver 中不可用?有什么解决方法吗?
我无法切换到 ChromeDriver,因为它还有另一个错误:“--headless”选项实际上与“--user-data-dir”选项冲突,而我确实需要两者。
解决方案
推荐阅读
- javascript - 如何在按钮 sweetalert 中添加图标 socmed
- python - 将类的所有参数和对象发送到 PyTorch 中的同一设备
- java - 在 Java/Groovy 语言中“实现”基本工厂方法
- python-3.x - 我如何使用\n(新字符)在python字典中的每个键值对之间插入一个空行
- java - 误解或可能违反 Java 中的通用子类型规则
- angular - 如何为 Angular 项目中的所有 get 函数启用 CORS?
- javascript - 构建反应应用程序的版本,提供指向 CSS 和 JS 文件的错误链接
- python - 按位置,for循环,python从文本中获取某些项目
- swift - Apple Pencil 笔的颜色比给 PKInkingTool 的颜色深
- javascript - 时间表应用程序 node.js、express、postgresql 的删除和编辑按钮