【问题标题】:toEqual by binding is not working通过绑定的 toEqual 不起作用
【发布时间】:2016-03-30 07:34:17
【问题描述】:

我必须通过以下方式断言文本:

expect(accessPolicyPage.accessPolicyName).toEqual(element.all(by.binding("pol.name")).get(0).getText());

它给了我一些很长的错误,如下所示。

预期“访问策略名称 01”等于 ({ ptor_: ({ controlFlow: 函数、调度:函数、setFileDetector:函数、getSession: 函数,getCapabilities:函数,退出:函数,动作: 函数,touchActions:函数,executeScript:函数, executeAsyncScript:函数,调用:函数,等待:函数,睡眠: 函数,getWindowHandle:函数,getAllWindowHandles:函数, getPageSource:函数,关闭:函数,getCurrentUrl:函数, getTitle:函数,findElementInternal_:函数, findElementsInternal_:函数,截图:函数,管理: 功能、开关

【问题讨论】:

    标签: javascript jasmine protractor


    【解决方案1】:

    您在控制台上看到的是一个“可怕的”promise 对象表示。如果你需要一个真正的价值,明确地解决承诺then()

    element.all(by.binding("pol.name")).get(0).getText().then(function (text) {
        expect(accessPolicyPage.accessPolicyName).toEqual(text);
    });
    

    或者,由于accessPolicyPage.accessPolicyName 是一个预先定义的实际文本,您可以只交换匹配器中的内容并expect() 隐式解析promise

    expect(element.all(by.binding("pol.name")).get(0).getText()).toEqual(accessPolicyPage.accessPolicyName);
    

    这个选项比较简单,一般推荐。

    【讨论】:

      【解决方案2】:

      事实上,Protractor 支持对 Promise 的期望。但它只处理案例,当期望的第一个参数是承诺时。所以以下应该工作:

      expect(somePromise).toEqual(someString);
      expect(somePromise).toEqual(anotherPromise);
      

      但这个不会:

      expect(notPromise).toEqual(somePromise);
      

      【讨论】:

        【解决方案3】:

        getText() 返回一个承诺而不是文本,需要处理。

        Protractor: element.getText() returns an object and not String

        【讨论】:

          猜你喜欢
          • 2011-12-14
          • 1970-01-01
          • 1970-01-01
          • 2018-04-07
          • 1970-01-01
          • 2016-09-16
          • 2021-11-26
          • 2013-12-15
          • 1970-01-01
          相关资源
          最近更新 更多