无法使用“量角器”获取“元素”的“文本”

时间:2017-11-15 07:13:53

标签: angular jasmine protractor

您好我正在为“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'.

任何人都可以帮我解决这个问题吗

2 个答案:

答案 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');
        })