使用量角器检查 DOM 元素中的文本
Check text in a DOM element using Protractor
这是我在使用 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(),但没有成功。
有什么建议吗?
是否:
expect(el.getText()).to.eventually.contain("some interesting string");
工作?
我相信您需要 .eventually
来等待承诺的解决,并且您需要 .getText()
来获取 div
的内容。
请参阅 the cucumber sample 开头的 chai-as-promised 内容。
试试下面对我有用的解决方案
解决方案 1:
expect(page.getTitleText()).toContain('my app is running!');
解决方案 2:
expect<any>(page.getTitleText()).toEqual('my app is running!');
这是我在使用 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(),但没有成功。
有什么建议吗?
是否:
expect(el.getText()).to.eventually.contain("some interesting string");
工作?
我相信您需要 .eventually
来等待承诺的解决,并且您需要 .getText()
来获取 div
的内容。
请参阅 the cucumber sample 开头的 chai-as-promised 内容。
试试下面对我有用的解决方案
解决方案 1:
expect(page.getTitleText()).toContain('my app is running!');
解决方案 2:
expect<any>(page.getTitleText()).toEqual('my app is running!');