【问题标题】:Selenium: Problem with deleting cookiesSelenium:删除 cookie 的问题
【发布时间】:2011-10-31 23:26:47
【问题描述】:

我们使用 selenium 2.4 和 python 客户端,并在 Firefox 上运行脚本。
在执行 delete_all_visible_cookies 时,我们得到了异常:

错误:命令执行失败。请在https://groups.google.com/forum/#!forum/selenium-users 的用户组中搜索日志窗口中的错误详细信息。错误信息是:格式错误的 URI 序列

我们意识到,当我们有来自第三方的 cookie(因此我们无法更改它)导致问题时,就会发生这种情况。我们asked about it here in the past 有一个open bug of Selenium 来解决这个问题,但还没有解决。

同时为了克服这个问题,我们在执行 delete_all_visible_cookies 之前使用 delete_cookie 单独删除了有问题的 cookie。但是,在 Selenium 2 中,delete_cookie 也会出现此错误。

我们认为这可能是因为 cookie 的值(类似于:WSS_GW=V1z%X%X^^^@C@),所以我们尝试覆盖它并将其设置为 0,然后再删除 cookie。然后我们得到了错误:

错误:无法删除 cookie WSS_GW。

我在网上找到的关于此错误消息的唯一解释是: deleteAllVisibleCookies fails if a cookie name contains % character 但我们还有其他名称中包含 _ 的 cookie,并且一切正常。

知道可能是什么问题或我们如何克服它吗?

【问题讨论】:

    标签: python cookies selenium selenium-rc selenium-webdriver


    【解决方案1】:

    好的,我们在这里发现了两个问题:

    1. cookie 值有问题,因此我们收到“格式错误的 URI 序列”错误。为了解决这个问题,我在删除 cookie 之前使用 create_cookie() 将 cookie 值设置为 0。

    2. 有 2 个 cookie 具有相同的名称和值,但具有不同的域:一个使用“domain.com”,一个使用“a.domain.com”(脚本打开 http://b.domain.com)。我猜想 Selenium 以某种方式看到了两个 cookie,在删除一个之后它仍然看到一个同名的 cookie,所以我们得到了“无法删除 cookie”的错误。为了解决这个问题,(在我更改了所有这些 cookie 的值之后)我使用 delete_cookie() 没有 递归参数删除了域为“domain.com”的 cookie,所以当我调用 delete_all_visible_cookies()它只是一个同名的 cookie。

    总而言之,我所做的是:

    for domain in ['.domain.com','a.domain.com','b.domain.com']:
            sel.create_cookie("%s=0"%problematic_cookie,"path=/, domain=%s"%domain)
    sel.delete_cookie(problematic_cookie,"path=/, domain=.domain.com") # without recurse
    sel.delete_all_visible_cookies()
    

    【讨论】:

    • 从哪里导入这个函数和模块?我总是遇到问题from selenium import delete_all_visible_cookiesimport selenium as sel sel.delete_all_visible_cookies 如何从哪里导入它?我在 python 2.7 中使用了最后一个版本的 selenium
    • 我这里没有代码,但据我记得,sel 是 selenium 类的一个对象(这段代码 sn-p 没有使用 selenium 2)。
    • 至少在 Selenium 2 中,cookie API 是 webdriver 的一部分。因此,API 可能因驱动程序而异。例如,PhantomJS 驱动程序没有delete_all_visible_cookies
    猜你喜欢
    • 2011-09-05
    • 2011-12-24
    • 2011-08-05
    • 1970-01-01
    • 2011-03-28
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多