Невозможно удалить определенный именованный файл cookie (Selenium WebDriver, C #, Chrome) - PullRequest
0 голосов
/ 31 мая 2018

В ряде моих тестов используется метод DeleteCookies, который делает это:

chromeDriver.Manage().Cookies.DeleteAllCookies();

Это было замечательно до сегодняшнего дня, когда один из тестов заставил приложение принять исключение:

Необходимый файл cookie для защиты от подделки "__RequestVerificationToken" отсутствует.

Поэтому я решил удалить конкретный рассматриваемый файл cookie, а не все:

chromeDriver.Manage().Cookies.DeleteCookieNamed("user%40user.com");

Указанный файл cookie не был удален.

Чтобы убедиться, что DeleteCookieNamed действительно сработал, я удалил два других файла cookie, создаваемых приложением, и все заработало.

Когда пользователь входит в систему, приложение задает имя файла cookie для его имени пользователя (в данном случае user@user.com) ... но, вероятно, из-за кодировки URL, изменяет @ на% 40.

Файлы cookie, которые удалили , не содержали% 40.

Если бы вы не могли удалить файлы cookie, где имя содержит% 40, тогда DeleteAllCookies не будетработал.Поэтому я подозреваю, что у моего целевого файла cookie есть зависимости, аналогичные тому, как работают ограничения внешнего ключа в реляционных базах данных, так что мне нужно удалить один или несколько других файлов cookie в определенном порядке, прежде чем я смогу удалить указанный.

Aбеглый взгляд на Google дает мне инструкции о том, как удалить куки в Chrome, а не как Chrome удаляет куки.Радость.У меня сегодня не хватает времени, пожалуйста, у вас есть какие-либо идеи?

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Это подходящее решение для моей конкретной ситуации - запустите тест CanLogIn последним, используя список воспроизведения:

https://stackoverflow.com/a/29039261/1875540

0 голосов
/ 01 июня 2018

Когда я обошел эту проблему, я решил создать cookie с помощью селена, а затем смог удалить его.Мне было проще, хотя не использовать @ в именах файлов cookie.Надеюсь, это поможет.

...