2016-05-10 15 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); 
    } 

私は、そのID端子は、どの要素を述べていない使用してみました iはボタンのテキスト

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

を誤る得ることは非常に李の発見あなたのポップアップは非同期で開き、すぐには表示されません。期待される要素が存在するのを待つようにしてください。要素が見つからないときにはエラーが発生してタイムアウトするか、またはポップアップとボタンが表示された後にのみ現在のテストの制御フローを続行します。

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'を割り当てることはできません。 @Tom Tu –

+0

JSで動作しますが、TSは 'by.buttonText( 'CANCEL')だけで' element(by.buttonText(...)) 'を変更しようとしますisElementPresetはElementLocatorも受け入れる必要があります。分度器はそれが要素ではなくロケータだけを受け入れるべきだと伝えます(これは真実ではありません) –

関連する問題