Загрузить файл в тесте E2E с помощью транспортира

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

Я хочу использовать function(el: WebElement) , но у меня есть ошибка:

import { ElementFinder, browser, by, element } from 'protractor'

SyntaxError: Невозможно использовать оператор импорта вне модуля

Мой код в fic_test.js :

it("Upload file",function(){
        let filePath = "../../../PJ/a.jpg";
        let fpath = path.resolve(__dirname,filePath);     
        browser.get("...");
        browser.sleep(5000);
        browser.findElement(by.xpath('//button[contains(.," Télécharger un autre document ")]')).then(function(el: WebElement){
            browser.executeScript("arguments[0].scrollIntoView(true);",el);
            el.sendKeys(fpath);
        });

Файлы в моем проекте:

  • конф / conf.js
  • тесты / fic_test.js

Всего 1 ответ


Я думаю, что вы посылаете ключи элементу с тегом input, по крайней мере, это единственный способ, которым он работал для меня, и из вашего xpath я не думаю, что вы отправляете fpath нужному элементу. Кроме того, посмотрите на мой ответ на аналогичный пост , это может помочь

ОБНОВЛЕНИЕ в ответ на ваш комментарий: Извините, я использовал этот код там, где я работаю, поэтому делиться всем этим не стоит. Вот как я бы написал тест, который вы упомянули в своем вопросе:

const EC = ExpectedConditions;

it('Upload file', () => {
 const filePath = '../../../PJ/a.jpg'
 const absolutePath = require('path').resolve(__dirname, filePath);
  browser.get("...");
  // maybe add here a little wait
  browser.wait(EC.presenceOf($('cssSelector-of-ur-input-el')), 5000, 'ERROR: Input el. not found');
  $('cssSelector-of-ur-input-el').sendKeys(absolutePath);
});

Я не нашел никакой реальной необходимости прокручивать страницу до используемого элемента, поскольку его присутствие было единственной вещью, в которой нуждался транспортир ... надеюсь, это поможет :)


Есть идеи?

10000