这是我在使用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(),没有成功。
有什么建议吗?
答案 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!');