使用量角器检查 DOM 元素中的文本

aza*_*gru 4 angularjs protractor cucumberjs

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

<div class="someClass">
   <p>{{textFromBoundModel}}</p>
</div>
Run Code Online (Sandbox Code Playgroud)

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

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

<div class="someClass">
   <p>{{textFromBoundModel}}</p>
</div>
Run Code Online (Sandbox Code Playgroud)

但这不起作用。问题是,el是某种定位器对象,我不知道如何获取它找到的元素的 html 以针对此 html 进行测试。尝试过 .getText(),但没有成功。

有什么建议?

小智 6

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

解决方案 1:

expect(page.getTitleText()).toContain('my app is running!');
Run Code Online (Sandbox Code Playgroud)

解决方案2:

expect<any>(page.getTitleText()).toEqual('my app is running!');
Run Code Online (Sandbox Code Playgroud)


P.T*_*.T. 5

做:

expect(el.getText()).to.eventually.contain("some interesting string");
Run Code Online (Sandbox Code Playgroud)

工作?

我相信您需要.eventually等待承诺解决,并且您需要.getText()获取div.

请参阅黄瓜样本开头的 chai-as-promised 内容。