硒使用firefox个人资料

时间:2016-05-16 05:38:17

标签: python selenium firefox

我尝试在Windows 10系统上使用Selenium Webdriver和Python来实现浏览器操作的自动化。但是我遇到了这个问题:Selenium启动的Firefox窗口没有""看到"我已经登录并且目标站点将我发送到登录页面。所以我认为Selenium并没有真正使用该配置文件,只是它的副本。

我想知道:

  1. 关于实际使用个人资料副本的结论是真的吗?
  2. 如果1.为真,有没有办法真正使用现有配置文件中的所有内容?
  3. 如果我的结论不正确,请证明并指出我可以找出哪些信息可用于会话的方向,为什么Selenium无法发送它以及如何强制它实际上这样做。
  4. 编辑:

    from selenium import webdriver
    fp = webdriver.FirefoxProfile('C:/Users/<user name>/AppData/Roaming/Mozilla/Firefox/Profiles/abc3defghij2.ProfileName')
    driver = webdriver.Firefox(fp)
    driver.get("https://www.example.com/membersarea")
    

1 个答案:

答案 0 :(得分:10)

Selenium确实使用了个人资料的副本,但这不应该导致任何问题。我认为你的问题更多地与会话cookie和持久性cookie有关。

On support.mozilla.org是一个列表,指示您的个人资料中实际存储了哪些信息。请注意,Cookie是其中之一,但session-cookies未存储在cookies.sqlite中,这是Selenium无法重建会话的原因,因为它没有出现在配置文件中。

但是,许多网站在其登录页面上提供remember-mestay-logged-in选项,如果使用该选项,则会存储一个持久性cookie,通过该cookie可以恢复会话。我使用以下脚本来测试gmail,

from selenium import webdriver

url = "https://mail.google.com"
fp = webdriver.FirefoxProfile('/Users/<username>/Library/Application Support/Firefox/Profiles/71v1uczn.default')

driver = webdriver.Firefox(fp)
driver.get(url)

当我在启用stay-logged-in选项的情况下登录gmail后运行此脚本时,Selenium可以访问我的收件箱。如果未启用stay-logged-in选项,则会在关闭浏览器时销毁会话,因此Selenium也无法恢复。

下面的屏幕截图显示会话cookie确实没有存储在cookies.sqlite中,因此在Selenium使用时不会出现在配置文件中。

Firefox cookies in cookies.sqlite and firebug