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

Всех с наступающим Новым Годом! Помогите пожалуйста разобраться, как отправить через webdriver json-запрос на загрузку файла.

Selenium такими вещами не занимается. Загружать файл в форму можно через send_keys. Все что касается post\get запросов, это к любой библиотеке работающей с REST.

а толковую библиотечку не посоветуете? и каким образом можно залить файл через send_keys?

Ну вы бы хоть сказали какой ЯП используете :smile: По поводу загрузки файла через send_keys:

element = self.driver.find_element_by_xpath(xpath)
element.send_keys(file_path) 

Тут все очень просто, пример на Python (для Java, C# и etc. думаю не сильно будет отличаться), вам нужно получить элемент input который используется в форме для загрузки, и через send_keys передать ему путь к загружаемому файлу. Потом просто отправляете форму любым способом. Естественно такой способ канает только если есть input элемент для загрузки.

P.S.: по поводу библиотеки для REST, могу только подсказать либу под Python - requests очень простая и гибкая.

unirest — кроссязыковая библиотека для работы с HTTP(S).

я использую связку java+junit+selenium

Rest assured библиотечка для json
Решение вашей задачи выглядит как то так
given(). multiPart(new File("/path/to/file")). when(). post("/upload");

почитать тут

Продолжение вопроса: а как выдернуть из ответа сервера cookie?

с помощью чего?

selenium+java. Если есть возможность, то через Rest accured

https://github.com/jayway/rest-assured/blob/master/examples/rest-assured-itest-java/src/test/java/com/jayway/restassured/itest/java/CookieITest.java

а можно немного поподробнее?

Там куча примеров.

final Map<String,String> cookies = get("/multiCookie").cookies();

я понять только не могу : /multiCookie это что?

запрос на какой-то бэкенд?

да. у меня задача - через автотесты залить файлы. автотесты на java+junit+selenium.

это был ответ, get("/multiCookie") это обычный гет запрос куда-либо, по сути

GET /something
...

данный пример урла взят из теста с их гитхаба

понятно, спасибо большое

в продолжение вопроса:

public void cookiesReturn() throws Exception {
   final Map<String,String> cookies = get("/login").cookies();
   System.out.print(cookies.get("rememberme"); 
}

Не работает. При попытке вызвать из теста cookiesReturn(); - выдается ошибка

Теперь у меня еще начала вылезать непонятная ошибка при запуске самого браузера. В коде ничего не менял, добавил только вот это выдергивание куков.

какая ошибка?

экстрасенсы в отпуске (с) @ArtOfLife

1 лайк