我们使用 selenium 2.4 和 python 客户端,并在 Firefox 上运行脚本。
当执行delete_all_visible_cookies时,我们遇到异常:
ERROR: Command execution failure. Please search the user group at https://groups.google.com/forum/#!forum/selenium-users for error details from the log window. The error message is: malformed URI sequence
我们意识到,当我们拥有来自第三方的 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。然后我们得到了错误:
ERROR: Couldn't delete cookie WSS_GW.
我在网上找到的对此错误消息的唯一解释是: deleteAllVisibleCookies fails if a cookie name contains % character 但我们还有其他名称中包含 _ 的 cookie,并且一切正常。
知道问题是什么或者我们如何克服它吗?
最佳答案
好的,我们发现了 2 个问题:
cookie 值有问题,因此我们收到“格式错误的 URI 序列”错误。为了解决这个问题,我在删除 cookie 之前使用 create_cookie() 将 cookie 值设置为 0。
有 2 个 cookie 具有相同的名称和值,但具有不同的域:一个具有“domain.com”,一个具有“a.domain.com”(脚本打开 http://b.domain.com )。我猜想不知何故,Selenium 看到了这两个 cookie,并且在删除一个 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()
关于python - Selenium:删除 cookie 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7144941/