量角器:text.indexOf(...)。isDisplayed不是函数

时间:2017-06-12 22:57:06

标签: node.js protractor aurelia angularjs-e2e e2e-testing

我知道有几次曾经问过这个问题,即使我已经查看了这些问题,我也不确定如何解决这个问题。

我正在检查文字" EUR"包含在名为" currency"的div中。这对我以前很有用,但我已经开始使用lint而且我已经遇到了很多这类错误。

这是我得到的错误 Failed: text.indexOf(...).isDisplayed is not a function

这是我的代码



checkBuyerCurrency (text, buyerCurrency) {
    let currencyPromise = new Promise(function (resolve, reject) {
    const commonUtils = new CommonUtils();
    var EC = protractor.ExpectedConditions;
    browser.wait(EC.visibilityOf(element(by.className("currency")),     4000));
    var checkCurrency = element(by.className("balances"));
      checkCurrency.getText().then(function (text) {
           expect (text.indexOf("EUR").isDisplayed()).toBe(true);
           console.log("EUR only buyer");
      });
    });
  }




我是否需要制作text变量或将其转换为字符串?由于我使用Expect语句

的方式,我不完全确定如何执行此操作

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

“isDisplayed()”是Protractor API中的有效函数,但工作性质类似,它应该应用于web元素以检查元素是否在UI上显示。

但是,您将其应用于数字类型的文本,这不是isDisplayed()的预期用法。如果您的要求失败,则文本不存在,请执行以下操作。

checkCurrency.getText().then(function (text) {

       expect (text.indexOf("EUR")).toBeGreaterTha(-1);
  });

 checkCurrency.getText().then(function (text) {
   if(text.indexOf("EUR")>-1){
    //do what do you want
    }else{
      expect (false).toBe(true);//it will make test case fail is EUR is not 
                                //present
      }
  });