2017-08-24 23 views
0

我想要一個函數返回的將用於assertaion如何從控制檯日誌中檢索值並在我的量角器測試中將其置爲有效?

請考慮下面的函數值:

function giveWrittenValue(x) { 
     var msg; 
     x.getAttribute('value').then(function (value) { 
      if (value) { 
       console.log(value); 
       var errorMsg = $('.invalid.error-msg'); 
       errorMsg.isPresent().then(function (Present) { 
        if (Present) { 
         msg = errorMsg.getText(); 
        } 
        else { 
         msg = 'Valid'; 
        } 
       }); 
      } 
      else { 
       msg = 'No input is provided'; 
      } 
      return msg; 
     }); 
    } 

,我的代碼是在這裏:

it('Provider VAT number validation with invalid VAT number',function() { 
     ProviderVatNumber.sendKeys('IMEZ'); 
     element(by.tagName("body")).click(); 
     body.click(); 
     browser.sleep(3000); 
     ccc = giveWrittenValue(ProviderVatNumber); 
     expect(ccc).toBe('Invalid VAT number'); 
}); 

我認爲有一些問題的功能。請任何人在這方面幫助我。

+0

能否請您解釋一下你想要什麼..要使用的console.log價值? – Nikita

+0

我想檢索從我的代碼生成的特定控制檯日誌。基於生成的控制檯日誌,我想檢查我的測試是否通過或失敗@ Nikita –

+0

我建議找到一種更好的方法來測試您正在處理的任何功能......這不是測試生產應用程序的現實場景。如果有的話,而不是將該值寫入控制檯,只需將其注入HTML元素,然後檢查它存在那裏。 – Gunderson

回答

0

你可以使用以下方法來抓住控制檯日誌,然後對它們執行斷言:

browser.manage().logs().get('browser').then(function(browserLog) { 
    // Replace the following with an Assert statement 
    console.log('log: ' + require('util').inspect(browserLog)); 
    // expect(browserLog.length).toEqual(0); 
}); 

https://github.com/angular/protractor/blob/master/docs/faq.md#how-can-i-get-hold-of-the-browsers-console

Check there were no errors in the browser console with Protractor

+0

我用代碼更新了我的帖子。你能幫忙嗎? @John Stennett –

0

的方法如下:

browser.manage().logs().get('browser').then(function(consoleLogs) { 
    // consoleLogs is an array of objects with level and message fields 
    // for example in the level property you can also check if it's an error through level.value > 900 
}); 

但問題是:爲什麼woul你做到了嗎?測試控制檯中顯示的內容實際上是一種非常不尋常的做法(特別是在e2e測試中)。 e2e測試不應該測試這個東西。

p.s.請記住,也是Chrome實現了assert方法可直接用於測試你的日誌:

console.assert(1 > 2, {"message":"1 it's not greater than 2"}); 
+0

嗨,我只是用代碼更新了我的帖子。你能幫忙嗎? @quirummo –

+0

首先你需要返回你的giveWrittenValue函數中的值。然後當你打電話時,你需要使用。所有的量角器方法都會返回promise,因爲它們是異步的。只是fyi,我知道你改變了你的代碼,並且你更新了所有的問題。但是正確的做法是留下舊的問題文本,並在最後添加新的代碼。如果您完全改變了您的問題,那麼您在第一個問題上得到的所有答案都會顯得很瘋狂,如果將來某位用戶會看到這個問題 – quirimmo

相關問題