2017-08-24 21 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

相关问题