如何在量角器测试中获取页面上的所有内容/文本?

时间:2013-12-15 19:50:53

标签: angularjs testing jasmine protractor

我想根据当前页面上是否存在某些文本来设置变量。

然后运行依赖于该变量的protractor测试。我不能$(':contains'),因为在此上下文中有$ != jQuery,我无法通过返回承诺的getText()看到一种简单的方法。有expect.toContain之类的匹配器吗?以及在匹配器运行后运行一些代码的方法?或者我可以使用其他策略。

2 个答案:

答案 0 :(得分:0)

如果我认为我理解正确,你可以使用以下几行:

这将提供页面中的所有文字:

window.document.getElementsByTagName("html")[0].innerText

然后您可以使用正则表达式来检查您的文字:

var res = patt.test(str);

这就是你得到的:

对于这个例子,我正在搜索文本“status”:“ok”

var str = window.document.getElementsByTagName("html")[0].innerText;
var patt = /"status": "ok"/;
var res = patt.test(str);
if(res){console.log(text is present!)}

答案 1 :(得分:0)

你想要的东西有点像这样:

 // utility to test expection of an element to match a regex:   
 var expectByCssToMatch = function(css, pattern) {             
   browser.driver.findElement(                                  
     by.css(css)).getText().then(function(text) {               
       expect(text).toMatch(pattern);                           
     });                                                        
 };                                                             

用法:

 describe('Logging in, function() {                       
   it('should work', function() {                                           
     var namePattern = new RegExp(param.name, i');
     expectByCssToMatch('.messages', /log\s?in successful/i);        
     expectByCssToMatch('body', namePattern);                       
   });                                                                      
 });                                                                        

实现您的要求,并希望将expect()来电替换为您自己选择的回调