我们正在使用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 @)所以我们试图覆盖它并在删除cookie之前将其设置为0。然后我们得到了错误:
错误:无法删除cookie WSS_GW。
我在网上发现此错误消息的唯一解释是: deleteAllVisibleCookies fails if a cookie name contains % character 但我们还有其他名称中包含_的cookie,一切正常。
知道问题是什么或我们如何克服它?
答案 0 :(得分:3)
Cookie值有问题,因此我们收到了'格式错误的URI序列'错误。要解决此问题,我在删除cookie之前使用create_cookie()将cookie值设置为0。
有2个cookie具有相同的名称和值,但具有不同的域:一个使用'domain.com',另一个使用'a.domain.com'(并且脚本打开http://b.domain.com) 。我想Selenium看到了两个cookie,在删除之后它仍然看到了一个同名的cookie,所以我们得到了“无法删除cookie”的错误。为了解决这个问题,(在我更改了所有这些cookie的值之后),我使用delete_cookie()删除了域名为“domain.com”的cookie而没有 recurse参数,所以当我调用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()