您好我正在为“Angular 4”应用程序编写Protractor自动化脚本。
开发代码如下。
<!--Byndd Title div-->
<div class="ui-g-12 ui-md-8 ui-lg-10">
<div class="bynndTitleClass" i18n="@@introductionBynddHeader">
BynddYour Information Together And CONNECT to the world in an EFFICIENT way
</div>
</div>
我的量角器测试脚本如下。
页面对象代码:
//to return login page heading
getLoginPageMainHeading(){
return element(by.css('div[class="bynndTitleClass"]')).getText();
}
规格代码:
//Testcase1 : To open the "Login page" of the application
it('should open the Login page' , ()=>{
//To open the Login page
page.loginPageDisplay();
// to verify whether the Current page is Login page or not by comparing with Login page Main heading
expect(page.getLoginPageMainHeading().toString()).toBe('BynddYour Information Together And CONNECT to the world in an EFFICIENT way');
});
执行后显示以下错误信息。 w ^
1) should test certificate tab should open the Login page
- Expected '[object Object]' to be 'BynddYour Information Together And CONNECT to the world in an EFFICIENT way'.
任何人都可以帮我解决这个问题吗
答案 0 :(得分:1)
由于expect()
自行解析了一个承诺,因此您在pageObject中的return element.getText()
路径正确。
但是,因为您添加了.toString()
,所以您的expect
命令现在将元素放入String而不是解析promise。
我建议只返回元素,并在getText()
语句中应用expect
。它更有意义,并使您的pageObject函数更好地重用于其他测试。
所以我的建议是这样的:
PageObject(只返回没有getText()
的元素):
//to return login page heading
getLoginPageMainHeading(){
return element(by.css('div[class="bynndTitleClass"]'));
}
和Spec(getText()
代替toString()
):
//Testcase1 : To open the "Login page" of the application
it('should open the Login page' , ()=>{
//To open the Login page
page.loginPageDisplay();
// to verify whether the Current page is Login page or not by comparing with Login page Main heading
expect(page.getLoginPageMainHeading().getText()).toBe('BynddYour Information Together And CONNECT to the world in an EFFICIENT way');
});
答案 1 :(得分:0)
这解决了我的问题
page.getLoginPageMainHeading().getText().then(function(value){
expect(value).toEqual('BynddYour Information Together And CONNECT to the world in an EFFICIENT way');
})