удалить browser.sleep () из методов - PullRequest
0 голосов
/ 08 апреля 2020

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

    addCustom() {
       const absolutePath = path.resolve(__dirname, 'pathCustom');
       elem.all(by.css('csslocator').get(0).sendKeys(absolutePath);
       browser.sleep(500);
    }

    addProd() {
       const absolutePath = path.resolve(__dirname,'pathProd');
       elem.all(by.css('csslocator').get(1).sendKeys(absolutePath);
       browser.sleep(500);
    }

    addOrders() {
       const absolutePath = path.resolve(__dirname, 'pathOrders');
       elem.all(by.css('csslocator').get(2).sendKeys(absolutePath);
       browser.sleep(500);
    }

В файле spe c я запускаю тест:

it('should upload three .csv files', (done) => {
        let upload = new UploadPageObjects();
        upload.addCustom();
        upload.addProd();
        upload.addOrders();
        upload.upload();
        done();
        expect(upload.confirmMessage.isDisplayed()).toBeTruthy();
    });

Если я удаляю browser.sleep () из методов при выполнении тестов:

Три файла добавляются в один контейнер

Есть ли способ удалить browser.sleep () из методов и избежать неправильного поведения?

    upload() {
        button = element.by(css('#upload-button');
        browser.wait(ec.elementToBeClickable(button), timeout);
        button.click();
        browser.waitForAngular();
    }

Ответы [ 2 ]

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

Finnaly Мне удалось добавить пользовательские wait (). Каждый раз, когда файл добавляется в контактер, отображается значок удаления. В итоге я создал:

wait(){
  const ec = protractor.ExpectedConditions;
  var removeFileButton= element(by.id('trash-can'));
  browser.wait(ec.elementToBeClickable(removeFileButton), 3000);
}

И это работает !!!

0 голосов
/ 10 апреля 2020

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

addCustom() {
             return new Promise((resolve, reject)={
           const absolutePath = path.resolve(__dirname, 'pathCustom');
           elem.all(by.css('csslocator').get(0).sendKeys(absolutePath);
           // browser.sleep(500);
           });
    }

    addProd() {
             return new Promise((resolve, reject)={
           const absolutePath = path.resolve(__dirname,'pathProd');
           elem.all(by.css('csslocator').get(1).sendKeys(absolutePath);
           // browser.sleep(500);
            });
    }

    addOrders() {
            return new Promise((resolve, reject)={
           const absolutePath = path.resolve(__dirname, 'pathOrders');
           elem.all(by.css('csslocator').get(2).sendKeys(absolutePath);
           // browser.sleep(500);
            }); 
    }

и обновить spe c, как показано ниже:

it('should upload three .csv files', (done) => {
        let upload = new UploadPageObjects();
        upload.addCustom().then(()=>{
            upload.addProd().then(()=>{
                upload.addOrders().then(()=>{
                    upload.upload();
                    done();
                    expect(upload.confirmMessage.isDisplayed()).toBeTruthy();
                });
            });
        });
 });

Как только обещание addCustom разрешено, обещание addOrders сопровождается addProd.

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