使用Protractor检查DOM元素中的文本

时间:2015-03-13 01:58:35

标签: angularjs protractor cucumberjs

这是我在使用Protractor测试Angular应用程序时要做的事情。我想获得某个元素,有点像这样:

<div class="someClass">
   <p>{{textFromBoundModel}}</p>
</div>

然后获取它的html,并检查它是否包含我希望它具有的文本。

我试图通过cssContainingText方法首先获取此元素,但它没有完成工作(不确定原因;可能因为段落中的文本是动态生成的)。所以现在我只使用by.css定位器获取此元素。接下来,我要检查它是否包含我正在测试的文本:

// this is Cucumber.js    

this.Then(/^Doing my step"$/, function(callback){
    var el = element(by.css('.someClass'));            
    expect(el).to.contain("some interesting string");
    callback();
 });
});

但这不起作用。问题是,el是某种定位器对象,我无法弄清楚如何获取它找到的元素的html以便测试这个html。尝试.getText(),没有成功。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

的作用:

expect(el.getText()).to.eventually.contain("some interesting string");

工作?

我认为您需要.eventually等待承诺才能解决,您需要.getText()来获取div的内容。

the cucumber sample的头部看到chai-as-promise的内容。

答案 1 :(得分:0)

尝试以下对我有用的解决方案

解决方案1:

String text = resultdiv.getText();

解决方案2:

expect(page.getTitleText()).toContain('my app is running!');