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

Не получается сделать file upload


(olegS) #1

Проблема с загрузкой файла
Использую Thucydides последней версии
делаю так:

newsPage.upload("src/test/resources/images2.jpg").to(newsPage.pictureForNews);

Picture

pictureForNews в моем случае ссылается на //input[@type=‘file’]

так же пробывал вот такой способ :

newsPage.pictureForNews.sendKeys(Loader.getResource("images2.jpg").getFile().substring(1).replace('/','\\'));

при этом рисунок лежит в папке с ресурсами

Результат в обоих случаях:

Caused by: org.openqa.selenium.NoSuchElementException: Element is not usable [[ChromeDriver: chrome on WIN8_1 (4831d8281cf34f7a446ff919dc18fb22)] -> xpath: //input[@type='file']]

(Руслан) #2

а если заменить

to(newsPage.pictureForNews);

на

     @FindBy(id="object_logo")
        WebElement element;
    
    
        public void loadLogoFrom(String filename) 
{
            upload("src/test/resources/images2.jpg").to(element);
        }

как-то так


(olegS) #3

аналогично
org.openqa.selenium.NoSuchElementException: Timed out after 30 seconds. Unable to locate the element: Element is not usable


(Руслан) #4

полный путь к файлу не пробовал?
и сделать ожидание, пока попап с загрузкой открывается

  1. Нажал.
  2. Ждать.
  3. Загрузить

(olegS) #5

думаю тут дело не в пути а в том, что с элементом взаимодействовать нельзя


(olegS) #6

System.out.println(newsPage.pictureForNews.isCurrentlyVisible()); выдало false


(Sergey Korol) #7

Судя по всему input у вас спрятан. Т.е. вам нужно его вначале сделать видимым при помощи JS.


(olegS) #8

ткните плиз носом на пример как инпут сделать видимым


(Sergey Korol) #9

Что-то по типу:

executeJS("$('#elementId').css({ display: 'block !important', visibility: 'visible', 'width':'auto', height: 'auto'})");

где executeJS - обертка для стандартного селениумовского экзекьютора.

П.С. Тут придется поиграться с параметрами. Я не знаю, как у вас там прячут элемент.