我尝试在Windows 10系统上使用Selenium Webdriver和Python来实现浏览器操作的自动化。但是我遇到了这个问题:Selenium启动的Firefox窗口没有""看到"我已经登录并且目标站点将我发送到登录页面。所以我认为Selenium并没有真正使用该配置文件,只是它的副本。
我想知道:
编辑:
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")
答案 0 :(得分:10)
Selenium确实使用了个人资料的副本,但这不应该导致任何问题。我认为你的问题更多地与会话cookie和持久性cookie有关。
On support.mozilla.org是一个列表,指示您的个人资料中实际存储了哪些信息。请注意,Cookie是其中之一,但session-cookies未存储在cookies.sqlite中,这是Selenium无法重建会话的原因,因为它没有出现在配置文件中。
但是,许多网站在其登录页面上提供remember-me
或stay-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使用时不会出现在配置文件中。