【问题标题】:Protractor: text.indexOf(...).isDisplayed is not a function量角器:text.indexOf(...).isDisplayed 不是函数
【发布时间】:2017-06-12 22:57:05
【问题描述】:

我知道这个问题已经被问过好几次了,尽管我已经查看了这些问题,但我不确定如何解决这个问题。

我正在检查文本“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 语句的方式,我不完全确定如何执行此操作

感谢您的帮助

【问题讨论】:

  • indexOf() 将返回一个数字或 -1 如果不存在... .isDisplayed() 不是数字的函数。这可能有效——expect(text.indexOf("EUR")).not.toBe(-1)
  • 感谢一百万的回复。如果我想将期望更改为 if,那么它将类似于...如果
    包含“EUR”//然后做某事//,知道我将如何实现它吗?

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


【解决方案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
      }
  });

【讨论】:

  • 感谢一百万的回复。这非常有效。如果我想将期望更改为 if,那么它将类似于...如果
    包含“EUR”//然后做某事//,知道我将如何实现它吗?
  • @Edmond 如果它适合你,你可以将其标记为正确答案
  • @Edmond,我已经更新了代码。这将满足您的要求。检查一次
  • 非常感谢您的帮助
  • 是的,将 text.indexOf("GBP")
猜你喜欢
相关资源
最近更新 更多
热门标签