如何在Python中通过webdriver删除Firefox的cookies?

0 投票
1 回答
2907 浏览
提问于 2025-04-15 16:28

我在用webdriver删除Firefox的cookies时遇到了问题。当我使用.delete_all_cookies这个方法时,它返回的是None。而当我尝试使用get_cookies时,出现了以下错误:

webdriver_common.exceptions.ErrorInResponseException: Error occurred when processing
packet:Content-Length: 120
{"elementId": "null", "context": "{9b44672f-d547-43a8-a01e-a504e617cfc1}", "parameters": [], "commandName": "getCookie"}
response:Length: 266
{"commandName":"getCookie","isError":true,"response":{"lineNumber":576,"message":"Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMLocation.host]","name":"NS_ERROR_FAILURE"},"elementId":"null","context":"{9b44672f-d547-43a8-a01e-a504e617cfc1} "}

我该怎么解决这个问题呢?

更新:

这个问题发生在我干净安装的webdriver上,没有任何修改。我在另一篇帖子中提到的更改是在这个帖子发布之后做的(我当时是在尝试自己解决这个问题)。

1 个回答

0

嗯,我其实没有用过Webdriver,所以这可能帮不上什么忙……不过在你之前的帖子里,你提到你在尝试修改删除cookie的webdriver js函数。在你修改删除函数之前,get_cookies有没有失败?在删除cookie之前获取cookie会发生什么?我猜测你在webdriver-read-only\firefox\src\extension\components\firefoxDriver.js中对删除函数的修改可能会导致删除功能出问题。你这样做只是为了调试,还是希望浏览器在驱动程序要求删除cookie时能弹出提示?如果这个修改导致问题,我也不会感到惊讶。

不过我真正想说的是,建议你开始使用Selenium,而不是继续用Webdriver,因为Webdriver在目前的版本中已经停止更新,或者说正在转变为Selenium。Selenium的开发更活跃,社区也很活跃,反应也快。在合并过程中,它会继续开发和保持稳定,而Webdriver可能在未来不会有太多的bug修复。我用Selenium的命令来控制cookie时取得了成功。他们似乎正在重新整理文档,出于某种原因,Python API没有链接,但如果你下载selenium rc,你可以在selenium-client-driver-python中找到Python API文档,你会看到有大约五个有用的方法来控制cookie。如果你想删除所有名称匹配某个正则表达式的cookie,可以在你自己的自定义Python方法中使用这些方法。如果你出于某种原因想让浏览器也弹出一些关于已删除cookie的信息,你可以通过从Python方法中获取cookie的名称/值,然后将它们传递给Selenium的getEval()语句来实现,这样就可以执行你提供的任意js代码(比如“alert()”)。……如果你选择了Selenium这条路,遇到问题随时可以联系我,我可能能帮上忙。

撰写回答