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

java.lang.VerifyError: class org.codehause.groovy.runtime.callsite.GroovySunClassLoader$2 overrides final method visit (IILjava/lang/String;Ljava/lang/String;(Ljava/lang/String;)V

Ошибку с запуском браузера я исправил. а вот эта вылетает при попытке выдернуть куки.

Проблема еще актуальна.

На счет загрузки файла. Можно это сделать с помощью autoit. Качаете его отсюда - AutoIt Downloads - AutoIt устанавливаете.
Затем создаете файл к примеру upload_file.au3 открываете его в редакторе и там пишете код.
;ожидание пока окно станет активным Local $handle = WinWaitActive("[CLASS:#32770]", ""); ;мигание окна, просто чтобы убедиться в правильности его выбора ;можно удалить - занимает лишнее время WinFlash($handle); ;заполнение поля диалога параметром, переданным из командной строки ControlSetText($handle, "", "Edit1", $CmdLine[1]); ;ENTER - подтверждение (можно вместо этого нажать на кнопку) Send("{ENTER}");
Затем Tools → Complite что бы сделать upload_file.exe.
Затем пишете код в IDE:

public void setUploadedFile(String filePath) {

        File autoIt = new File("c:\\upload_file.exe");

        try {
            // запуск exe с передачей пути к загружаемому файлу
            // в качестве параметра
            Process p = Runtime.getRuntime().exec(
                    autoIt.getAbsolutePath() + " " + filePath);
            // ожидание выполнения запроса
            p.waitFor();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void simpleTest() {

        driver.findElement(By.xpath(".//*[@id='add-file-1']")).click();

        File file = new File("c:\\22222.jpg");
        setUploadedFile(file.getAbsolutePath());``

А при чем тут вопрос? в ошибке не вижу ничего что может относиться именно к этому коду, не понятно ни на какой строчке что-то падает, вообще ничего не понятно. Расскажите, что дебажили, к чему пришли?

в факе - Usage · rest-assured/rest-assured Wiki · GitHub

Про куку - покажу на примере. После логина в куку auth_key пишется ключ сессии, его получаю в переменную

auth_key = expect() .statusCode(200) .when() .post("/login?username=" + URLEncoder.encode(email) + "&password=" + password) .then() .log().ifValidationFails() .extract().cookie("auth_key");

по пунктам:
expect:
- статускод 200
when:
- отправляю пост по адресу с именем пользователя и паролем
then:
` - лог если что то пошло не так

  • возвращаю куку auth_key`

ключевая строчка .extract().cookie("<переменная_куки>")

По ссылке что дал вам @st_eremin вам нужно посмотреть к примеру сюда

вы ожидаете что вернется кука key1 у которой значение будет value1 после отправки GET запроса на /setCookies

Этот вариант не подходит, т.к. будет куча exe файлов, что не даст собирать jar файл с тестами.

падает именно на вызове cookiesReturn() из теста. т.е. если я правильно понял, то ему почему-то не нравится

Map String, String

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

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

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

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

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

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

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

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

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

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

очевидно что [quote=“Alik_Gilizdinov, post:34, topic:8734”]
Затем я выдергиваю куки, необходимые для загрузки файлов.
[/quote] это вы придумали и там сессия после логина. как получить ключ сессии я вам показал.
когда будете отправлять следующий запрос на загрузку файла - не забудьте и его передать :wink:

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

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

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

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

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

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

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

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