Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Проверка загрузки файла на сайт


(Kristall89) #1

Приветствую еще раз. Продолжаю разбираться с селениумом.

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

Собственно, вопрос - это вообще реально протестировать с помощью селениума? Понятно, что на кнопку кликнуто можно, но можно ли как-то заставить его работать с проводником и выбирать файл? Или привязать конкретный файл изначально, я не знаю?
Пишу через xml, иначе не умею :)


(mamax) #2

 

привет!
не пробывал
но попал на классные видео по селениуму
http://qtpselenium.com/samplevideos/selenium/seleniumvideos.php

 

  Training Video - 37


 

Uploading files in Chrome

может оно


(Kristall89) #3

Спасибо, но с работы я не смогу открыть видео. :( Посмотрю с домашнего компа, может, и правда чем поможет.


(vmaximv) #4

Поищите на странице <INPUT type="file"... и просто тайпайте в него путь к файлу.


(Kristall89) #5

Нашла вот такое: <input class="hid_file_input" type="file" name="file">

На всякий уточняю - что из этого надо прописать в target?


(vmaximv) #6

Любой валидный локатор на Ваш вкус.


(Sergey Korol) #7
     /**
     * Send keys is used to select file for uploading
     *
     * @param inputBy  select file input locator
     * @param filePath relative path to file
     */
    protected void selectFile(By inputBy, String filePath) {
        LocalFileDetector detector = new LocalFileDetector();
        File file = detector.getLocalFile(filePath);
        driver.setFileDetector(detector);
        sendKeys(inputBy, file.getPath());
    }
 
    protected void sendKeys(By by, String text) {
        driver.findElement(by).sendKeys(text);
    }

 


(Kristall89) #8

Спасибо, кажется, получилось.

А есть ли способ проверить, что файл именно загрузился, за исключением тупо поиска текста (название файла появляется возле формы загрузки, не кликается, просто текст)?


(Kristall89) #9

Увы, это мне не поможет, ибо понятия не имею, как такое вставлять в ide :) Сие яваскрипт? Ява? Видите, даже этого не знаю :)
Мне бы простенько пока, с хтмл-тегами. :)


(Sergey Korol) #10

Java + WebDriver. Вы хотите реализовать загрузку файла на сервер при помощи IDE и потом еще проверить на серверной стороне, загрузился он или нет? :) В стандартном варианте вас спасет простой ввод пути в input с типом file, как уже написали выше, и банальная проверка текста. Хотя, наверняка у вас на сайте есть какой-нибудь менеджер загруженных файлов. Откройте и проверьте, что список пополнился еще 1 элементом. В нестандартном же случае придется учиться писать программы руками. :)


(Kristall89) #11

Проверка текста - не спасает. Такой текст просто не находится. Инпут спасает, да, на странице появляется имя файла, как при загрузке. Но файрбагом этот элемент выловить упорно не могу, нет там разницы "до загрузки" и "после".

Менеджера нет или я о нем не знаю. Это не сервис для хранения файлов, а форма отправки сообщения  в техподдержку, соответственно пользователь этот файл только загружает и более никак им не пользуется.

Ну блин НЕ ЗНАЮ я яву! :( Совсем не знаю. Знала бы - писала бы тесты на ней и не маялась с селениумом, аднака :(


(vmaximv) #12

А как вы это можете проверить вручную если

название файла появляется возле формы загрузки, не кликается, просто текст


(Kristall89) #13

АПД. Обсудили вопрос с коллегой :) Пока оставляем все, как есть, она потом на яве сама допишет, что надо.

Всем спасибо :)


(Halyna) #14

 

Может когда-то пригодится
 
<tr>
<td>type</td>
<td>id=reply_attachments</td> // "reply_attachments" -- какую кнопку нужно кликнуть 
<td>/path/file.jpg</td>
</tr>
 
 
Чтобы проверить, что файл загрузился я использовала verifyElementPresent  / link=file.jpg, но ето линк. Можете попробовать verifyTextPresent file.jpg