在量角器中使用 expect() 时遇到问题,想要获取第一个孩子的文本并将其与字符串进行比较



我想获取元素的孩子的文本并测试它是否等于用户输入字符串。

已经尝试了以下代码,这导致了相同的错误msg

await expect(element(by.className('tlid-translation translation').isDisplayed()).to.equal(true)

以及扔一些随机或检查元素。所有这些都没有帮助。

页面:

var CalculatorPage = function() {
    var expect = require('chai').expect;
  this.get = function() {
    browser.waitForAngularEnabled(false);
    browser.get('https://translate.google.com/', 50000);
  };
  this.checkTrans = async(stringg) => {
       await expect(element(by.className('tlid-translation translation').get(0).getText()).to.equal(stringg)
    }

};
module.exports = CalculatorPage;

步骤:


var chai = require('chai').use(require('chai-as-promised'));
var expect = chai.expect;
var CalculatorSteps = function() {
  var TranslatePage = require("../pages/translate_page.js");

  this.World = function MyWorld() {
    this.page = new TranslatePage();
  };
  this.When('I see $stringg as translated', async function end(stringg) {
      await this.page.checkTrans(stringg)
    })
};
module.exports = CalculatorSteps;

erro msg:

AssertionError: expected { Object (browser_, then, ...) } to equal true

在特定中:

问题在于代码中的括号。另外,避免弃用的方法

更改:

await expect(element(by.className('tlid-translation translation').isDisplayed()).to.equal(true)

to

await expect(element(by.css('tlid-translation translation:nth-child(1)')).getText()).toBe(stringg);

更改:

await expect(element(by.className('tlid-translation translation').isDisplayed()).to.equal(true)

to

await expect(element(by.className('tlid-translation translation')).isDisplayed()).toBeTruthy();

一般:

  • expect()需要一个承诺。大多数量角API处理鉴于它必须处理浏览器异步性质。制作确保expect()得到了承诺
  • element()需要Ex的定位器。by.css('div')。确保这就是案例。
  • element(Locator)上的方法将始终返回量角器承诺。确保代码以这种方式处理。
  • 我希望CSS选择器可以获取子元素而不是使用获取所有元素,然后从该列表中获取一个元素。这样表现更多,我们不需要API来处理。

希望有帮助..

相关内容

最新更新