В ряде моих тестов используется метод DeleteCookies, который делает следующее:
chromeDriver.Manage().Cookies.DeleteAllCookies();
Это было здорово до сегодняшнего дня, когда в одном из тестов приложение выдало исключение:
Требуемый файл cookie для защиты от подделки "__RequestVerificationToken" отсутствует.
Поэтому я решил удалить конкретный рассматриваемый файл cookie, а не все:
chromeDriver.Manage().Cookies.DeleteCookieNamed("user%40user.com");
Указанный файл cookie не был удален.
Чтобы убедиться, что DeleteCookieNamed действительно работает, я удалил два других файла cookie, которые создает приложение, и это сработало.
Когда пользователь входит в систему, приложение устанавливает имя файла cookie для своего имени пользователя (в данном случае [email protected]) ... но, предположительно, из-за кодирования URL-адреса, изменяет @ на %40.
Файлы cookie, которые удалены, не содержат %40.
Если бы вы не могли удалить файлы cookie, имя которых содержит %40, то DeleteAllCookies не сработала бы. Поэтому я подозреваю, что у моего целевого файла cookie есть зависимости, подобные тому, как ограничения внешнего ключа работают в реляционных базах данных, так что мне нужно удалить один или несколько других файлов cookie в определенном порядке, прежде чем я смогу удалить указанный.
Беглый взгляд на Google дает мне инструкции о том, как удалить файлы cookie в Chrome, а не о том, как Chrome удаляет файлы cookie. Радость. У меня сегодня мало времени, пожалуйста, у вас есть идеи?