Selenium: проблема с удалением куки - PullRequest
2 голосов
/ 22 августа 2011

Мы используем selenium 2.4 с клиентом Python и запускаем сценарии в Firefox.
При выполнении delete_all_visible_cookies мы получаем исключение:

ОШИБКА: ошибка выполнения команды. Пожалуйста, найдите в группе пользователей https://groups.google.com/forum/#!forum/selenium-users подробности об ошибках в окне журнала. Сообщение об ошибке: неправильная последовательность URI

Мы поняли, что это происходит, когда у нас есть файл cookie от стороннего производителя (поэтому мы не можем его изменить), который вызывает проблему. Мы спрашивали об этом здесь в прошлом , и есть открытая ошибка Selenium для этой проблемы, но она еще не исправлена.

Тем временем, чтобы преодолеть эту проблему, мы удалили проблемный куки-файл отдельно, используя delete_cookie, прежде чем делать delete_all_visible_cookies. Однако в Selenium 2 мы получаем эту ошибку и для delete_cookie.

Мы подумали, что это может быть из-за значения cookie (что-то вроде: WSS_GW = V1z% X% X ^^^ @ C @), поэтому мы попытались переопределить его и установить 0, прежде чем удалять cookie. Тогда мы получили ошибку:

ОШИБКА: не удалось удалить файл cookie WSS_GW.

Единственное объяснение этому сообщению об ошибках, которое я нашел в Интернете: deleteAllVisibleCookies завершается ошибкой, если имя файла cookie содержит символ% но у нас есть другие файлы cookie, содержащие в своем имени _, и все работает нормально.

Есть идеи, в чем может быть проблема или как мы можем ее преодолеть?

1 Ответ

3 голосов
/ 25 августа 2011

хорошо, мы нашли 2 проблемы, которые у нас есть:

  1. Значение файла cookie проблематично, поэтому мы получили ошибку «неправильная последовательность URI».Чтобы решить эту проблему, я установил значение cookie на 0, используя create_cookie (), перед удалением файлов cookie.

  2. Существует 2 файла cookie с одинаковым именем и значением, но с разными доменами: один с «domain.com» и один с «a.domain.com» (и сценарий открытhttp://b.domain.com). Я полагаю, что каким-то образом Selenium увидела оба куки-файла, и после удаления одного из них все же увидела куки-файл с тем же именем, поэтому мы получили ошибку «Не удалось удалить куки-файл». Чтобы решить это, (послеЯ изменяю значение всех этих файлов cookie) Я удалил файл cookie с доменом domain.com с помощью delete_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()
...