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());``
А при чем тут вопрос? в ошибке не вижу ничего что может относиться именно к этому коду, не понятно ни на какой строчке что-то падает, вообще ничего не понятно. Расскажите, что дебажили, к чему пришли?
@Alik_Gilizdinov, а вы с вашими девелоперами принципиально не общаетесь?
Подобные вещи обычно покрываются unit/integration тестами. Что сложного спросить у разработчиков, какой должен быть формат реквеста / респонса для file upload? Они вам прям готовое решение на блюдечке предоставят в виде теста. Пусть даже если теста вовсе нет, вам все равно важно понимать, что уходит в реквесте помимо файлов (там наверняка нужна предварительная авторизация с передачей токена в заголовках).
@ArtOfLife, авторизация проходит через веб-гуй, и это у меня проходит. Затем я выдергиваю куки, необходимые для загрузки файлов. А насчет общения - меня отправляют курить маны и гуглить
У нас есть тесты, которые запускаются сразу после сборки. У меня же задача - написать smoke-тесты для запуска с любой машины. В другом случае, я бы не извращался с запросами, а написал скрипты через autoIt
очевидно что [quote=“Alik_Gilizdinov, post:34, topic:8734”]
Затем я выдергиваю куки, необходимые для загрузки файлов.
[/quote] это вы придумали и там сессия после логина. как получить ключ сессии я вам показал.
когда будете отправлять следующий запрос на загрузку файла - не забудьте и его передать
То, что происходит на UI, совершенно никак не связано с тем, что вы собираетесь сделать отдельно через post запросы. В большинстве случаев, сервер вас просто отправит “погулять” с 401 респонсом, если вы попытаетесь отправить POST без внутренней авторизации. Любое стороннее обращение к end-points без авторизации должно строго пресекаться в целях секьюрности. Т.е. если вы хотите отправить файлы, минуя UI, вам все равно нужно отдельно авторизоваться, посылая токены / куки в хэдерах удаленному сервису.
П.С. Если девелоперы посылают вас в гугл, самое время заэскалейтить этот вопрос вашему менеджменту за отказ в содействии во благо проекту.
Так все правильно, я авторизуюсь в UI - затем должен выдернуть куки rememberme - и подложив их в запрос на загрузку файла - загрузить файл. И загвоздка сейчас именно в том, как выдернуть куки rememberme. У меня такое ощущение, что я как-то по особенному туп в плане автотестирования и кодинга:smiley:
Современные приложения уже давно не используют одни только куки для авторизации, ибо это несекьюрно. У вас по хорошему должен быть композитный ключ, состоящий из куков + уникального токена, который генерируется на сервере в процессе хэндшейка / авторизации. Все это добро передается в хэдерах по всем реквестам. Если куки вы еще как-то и сможете вытянуть из браузера, то что собираетесь делать с уникальным токеном из хэдеров? Я конечно не знаю, что у вас за приложение, но я бы не стал надеяться на чудо в виде одних только куков. В любом случае, эту инфу необходимо узнавать у девелоперов, иначе мы будем очень долго играть в угадайки.
Я бы сам уволился из компании, где люди не умеют и не хотят работать в команде.