Помогите пожалуйста разобраться с json-запросами

webdriver
json
rest
Теги: #<Tag:0x00007fedbc924288> #<Tag:0x00007fedbc924120> #<Tag:0x00007fedbc925e80>

(Алик Гилиздинов) #28

Проблема в том, что я не знаю, какое значение будет у key1. То есть я не знаю значение value1.


#29

попробуем так


(Alexey Bes) #30

exe файл будет один, он работает со всеми диалоговыми окнами. Ну в общем-то смотрите что вам необходимо в вашем случае


(Алик Гилиздинов) #31

Если я на каждое такое действие по отправке\получению через Json буду в автоите писать скрипты, у меня порядка 100-200 файлов автоита получится.


#32

То ли лыжи не едут....
Как вы в куке получаете кучу exe файлов???

Мой ответ на ваш вопрос


(Sergey Korol) #33

@Alik_Gilizdinov, а вы с вашими девелоперами принципиально не общаетесь?
Подобные вещи обычно покрываются unit/integration тестами. Что сложного спросить у разработчиков, какой должен быть формат реквеста / респонса для file upload? Они вам прям готовое решение на блюдечке предоставят в виде теста. Пусть даже если теста вовсе нет, вам все равно важно понимать, что уходит в реквесте помимо файлов (там наверняка нужна предварительная авторизация с передачей токена в заголовках).


(Алик Гилиздинов) #34

@ArtOfLife, авторизация проходит через веб-гуй, и это у меня проходит. Затем я выдергиваю куки, необходимые для загрузки файлов. А насчет общения - меня отправляют курить маны и гуглить :smile:

У нас есть тесты, которые запускаются сразу после сборки. У меня же задача - написать smoke-тесты для запуска с любой машины. В другом случае, я бы не извращался с запросами, а написал скрипты через autoIt


#35

@Alik_Gilizdinov такое чувство что мы вас пытаем

очевидно что

это вы придумали и там сессия после логина. как получить ключ сессии я вам показал.
когда будете отправлять следующий запрос на загрузку файла - не забудьте и его передать :wink:


(Алик Гилиздинов) #36

@Artyom, я сделал как Вы написали, и теперь у меня ошибка java.net.ConnectException: Connection refused: connect

Сейчас разбираюсь с этой ошибкой. Такое ощущение, что не может запустить Jetty из lib'ы


(Sergey Korol) #37

То, что происходит на UI, совершенно никак не связано с тем, что вы собираетесь сделать отдельно через post запросы. В большинстве случаев, сервер вас просто отправит "погулять" с 401 респонсом, если вы попытаетесь отправить POST без внутренней авторизации. Любое стороннее обращение к end-points без авторизации должно строго пресекаться в целях секьюрности. Т.е. если вы хотите отправить файлы, минуя UI, вам все равно нужно отдельно авторизоваться, посылая токены / куки в хэдерах удаленному сервису.

П.С. Если девелоперы посылают вас в гугл, самое время заэскалейтить этот вопрос вашему менеджменту за отказ в содействии во благо проекту. :wink:


(Алик Гилиздинов) #38

Так все правильно, я авторизуюсь в UI - затем должен выдернуть куки rememberme - и подложив их в запрос на загрузку файла - загрузить файл. И загвоздка сейчас именно в том, как выдернуть куки rememberme. У меня такое ощущение, что я как-то по особенному туп в плане автотестирования и кодинга:smiley:


(Алик Гилиздинов) #39

Пробовал, чуть не уволили...


(Sergey Korol) #40

Современные приложения уже давно не используют одни только куки для авторизации, ибо это несекьюрно. У вас по хорошему должен быть композитный ключ, состоящий из куков + уникального токена, который генерируется на сервере в процессе хэндшейка / авторизации. Все это добро передается в хэдерах по всем реквестам. Если куки вы еще как-то и сможете вытянуть из браузера, то что собираетесь делать с уникальным токеном из хэдеров? Я конечно не знаю, что у вас за приложение, но я бы не стал надеяться на чудо в виде одних только куков. В любом случае, эту инфу необходимо узнавать у девелоперов, иначе мы будем очень долго играть в угадайки.

Я бы сам уволился из компании, где люди не умеют и не хотят работать в команде.


(Алик Гилиздинов) #41

Цитирую ответ разраба: тебе для пула документа необходимы куки rememberme, потому что ключ тебе сервер сделает по ним.
У меня отдельный тестовый сервер, так что защита не принципиальна на нем. Я проверяю загрузку файлов, скачивание, отображение и т.д.


(Sergey Korol) #42

Что значит "сервер сделает ключ по кукам"? :confused: Откройте chrome dev tools / network tab, пройдите UI автризацию и покажите реквесты. В частности - как происходит авторизация? Есть ли handshake? Появляются ли дополнительные хэдеры в реквестах после авторизации?


(Алик Гилиздинов) #43
:host:host
:method:POST
:path:/edi/account/login
:scheme:https
:version:HTTP/1.1
accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
accept-encoding:gzip, deflate
accept-language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
cache-control:no-cache
content-length:32
content-type:application/x-www-form-urlencoded
cookie:sessionid=70F9C147734BB3C606DB62A40CA5B929; __utma=185498161.1973530648.1415333758.1436346862.1436346862.1; _ym_uid=1446532402799338815; _ga=GA1.2.1973530648.1415333758
origin:host
pragma:no-cache
referer:host/edi/account/login
upgrade-insecure-requests:1
user-agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36

(Алик Гилиздинов) #44

set-cookie:rememberme=eyJhbGciOiJub25lIiwidHlwIjoiandzIn0.eyJpc3MiOiJUZXN0IFdlYiBiMmIiLCJhdWQiOlsiQjJCIl0sImV4cCI6MTQ1MzgxMDMxNywiaWF0IjoxNDUzODA2NzE3LCJwaWQiOiJiMjU0YjM1ZC00MmU4LTRlMjMtODc5YS1lZGY3NGY5NjRkOTgiLCJjaWQiOiIyZTEwZTM5NC1mYTZhLTQ3ZmYtYTFkMi1iYjQ2YTlkMTZjYTIifQ.;

Это в ответе


#45

@Alik_Gilizdinov что то вы наворотили ...

Давайте определятся. Вы либо тестируете UI либо API

Если UI то браузер запомнит вашу куку после авторизации, и вы смело можете selenium'ом прикреплять ваш файл и отправлять

Если API то садитесь за изучение матчасти. cURL вам в помощь, начинайте тыкать свой сервер и смотреть что куда отправляется.


(Алик Гилиздинов) #46

Я тестирую UI. Но при этом я могу использовать только java, selenium, Junit(testNG). Инструменты наподобие autoIT использовать запрещено :frowning: Соответственно, для загрузки файлов необходимо как-то извернуться.


(Назар Михальчук) #47

У Меня похожая проблема только нужно скачать файл =)