Есть ли способ удалить cookie HttpOnly из тестов C # Selenium? - PullRequest
5 голосов
/ 25 мая 2010

У меня есть набор тестов C # Selenium, которые должны удалить cookie, для которого установлен флаг HttpOnly.

К сожалению, команды DefaultSelenium.GetCookie() и DefaultSelenium.DeleteCookie() не могут получить доступ к cookie, потому что у него установлен этот флаг HttpOnly. Я подтвердил это, сняв флаг вручную и проверив, что последующие вызовы любого из этих методов могут успешно манипулировать данным файлом cookie.

Есть ли другой способ сделать это через драйвер клиента Selenium .NET?

Все идеи приветствуются!

1 Ответ

4 голосов
/ 27 мая 2010

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

Для всех, кто сталкивается с этой проблемой, есть хороший ТАК ответ здесь о том, как HttpOnly записывается в ASP.NET.

Кроме того, этот ответ SO указывает, как можно управлять HttpOnly через web.config приложения с оговоркой, что его можно только включать, а не выключать.

Каждый, кто хочет изменить свое приложение для целей тестирования, должен проверить этот обходной путь , в основном изменив метод Session_Start в Global.asax, чтобы убрать флаг HttpOnly, чтобы он был доступен для клиентского скрипта. Этот вид обходного пути должен использоваться только в тестовой среде, поскольку он открывает дыру в безопасности, которую HttpOnly был закрыт для закрытия, а именно - уязвимость XSS. Джефф Этвуд написал хороший пост в блоге об этом здесь .

...