python - Selenium:删除 cookie 时出现问题

标签 python cookies selenium selenium-rc selenium-webdriver

我们使用 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 个问题:

  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”错误。为了解决这个问题,(在我更改所有这些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/

相关文章:

python - Pandas read_csv 中的段错误

c# - 如何在静态类中使用 IHttpContextAccessor 设置 cookie

java - Gitlab ci selenium testing with docker not connecting to RemoteWebDriver

javascript - 启动 Selenium RC 时无法加载 user-extensions.js 中的自定义命令

Jquery cookie 插件 - 当用户提交表单时设置 cookie

javascript - Javascript 中的 Selenium Protractor : Extracting getText keeps returning undefined

python - 从字典创建图形工具图形

Python 信号 : reading return from signal handler function

python - 从单独的列表创建一个嵌套列表

php - 通过 JavaScript 设置 Cookie 与通过 PHP 设置 Cookie