2016-05-10 2 views
1

У меня есть кнопка внутри всплывающего окна в .ts файл, мне нужно нажать на эту кнопку и выполнить какое-либо действие,Не удалось нажать на кнопку в всплывающем e2e

accept() { 
     let prompt    = Alert.create({ 
      title    : 'Accepted', 
      cssClass   : 'accepted', 
      enableBackdropDismiss    :  false, 
      buttons: [{ 
       text   : 'Accept', 
       cssClass  : 'button1', 
       handler   : data  => { 
        this.approveForm(); 
       } 
      },{ 
       text   : 'Cancel', 
       cssClass  : 'button3', 
       id    : 'cancel', 
       handler   : data  => { 
        console.log(data); 
       } 
      }] 
     }); 

     this.nav.present(prompt); 
    } 

я попытался с помощью своего ИД терминала не говорит ни один элемент найдено я попытался с помощью кнопки текста

it('should open the accept and reject popup click cancel button',() => { 
     acceptPopup.click();  
     element(by.buttonText('CANCEL')).click(); 
     browser.driver.sleep(6000);  
    }); 

, но до сих пор я получаю заблуждаться

✗ should open the accept and reject popup click cancel button 
     - Failed: No element found using locator: by.buttonText("CANCEL") 
F 

ответ

2

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

var timeout = 10000; // default value for timeout 
 
browser.wait(function() { 
 
    return browser.isElementPresent(element(by.buttonText('CANCEL'))); 
 
}, timeout);

+0

e2e.ts (75,37): Аргумент типа 'ElementFinder' не может быть назначен для параметра типа «Локатор | {className: string; } | {css: string; } | {id: string; } | {js: string; } | {linkT ... '. Тип 'ElementFinder' не присваивается типу 'Function'. @Tom Tu –

+0

Работает в JS - но для TS попытайтесь изменить 'element (by.buttonText (...))' только с 'by.buttonText ('CANCEL')' isElementPreset также должен принять ElementLocator, и я думаю, что ваш td для транспортичника говорит, что он должен принимать только локатор, а не элемент (что неверно) –