Загрузить файл в тесте E2E с помощью транспортира - PullRequest
0 голосов
/ 11 февраля 2020

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

Я хочу использовать 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 / conf. js
  • tests / fic_test. js

1 Ответ

0 голосов
/ 12 февраля 2020

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

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

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);
});

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...