量角器-参见页面上的文字

问题描述 投票:5回答:3

我正在尝试使用量角器编写测试,而没有将我的测试与页面的特定标记高度结合。

例如,给定一个典型的登录页面,我想测试是否提供了错误的凭据,出现错误消息。

我的标记显示该错误的方式是:

<div class="alert alert-danger">
    <ul>
        <li>Invalid username or password.</li>
    </ul>
</div>

此无序列表也可能包含其他错误-因此,我不想对list元素本身进行断言。无论如何,我可能决定不再将错误显示为列表,并且可能希望以其他方式显示它。

我想要的是能够断言page包含:无效的用户名或密码。

我希望能够做类似的事情:

expect(page.getContents()).to.contain('Invalid username or password.'); 

但是,这当然行不通。

[量角器中有没有可用的方法可以使我做到这一点?

javascript testing protractor e2e-testing
3个回答
5
投票

您可以使用element.getText()。

https://angular.github.io/protractor/#/api?view=webdriver.WebElement.prototype.getText

获取此元素的可见(即未被CSS隐藏),包括子元素,而没有任何前导或尾随空格。

要从列表中获取所有文本。然后expect(text).toContain("Invalid username or password")

使用angularjs.org的示例:

 browser.driver.get('https://angularjs.org/')
    el = element(by.css('.first'))
    el.getText().then(function(text){expect(text).toContain("AngularJS is a toolset for")});

2
投票

您可以使用xPath选择包含要查找的文本的DOM元素,然后检查该元素是否存在。

我正在使用此代码和

var myText = "Invalid username or password.";
var selectedElement = element(by.xpath("//*[. = '" + myText + "']"));

expect(selectedElement.isPresent()).to.eventually.equal(true, "This text is not present in page.").and.notify(callback);

我已经测试了您的示例中的代码片段,并且可以正常工作。请注意,我使用的是承诺的柴,所以,如果您不认识正税,那就不用担心。重要的是第二部分:expect(selectedElem)...用于检查元素是否存在于页面中。


1
投票

这对我有用:

expect(element(by.cssContainingText('*', 'Invalid username or password.')).isPresent()).toBeTruthy();
© www.soinside.com 2019 - 2024. All rights reserved.