在量角器中使用 expect() 时遇到问题,想要获取第一个 child 的文本并将其与字符串进行比较
Having trouble using expect() in protractor, want to get the first child's text and compare it to a string
我想获取元素 child 的文本并测试它是否等于用户输入的字符串。
已经尝试了下面的代码,导致了同样的错误消息
await expect(element(by.className('tlid-translation translation').isDisplayed()).to.equal(true)
以及随机添加一些 .eventually 或检查 element.all,但其中 none 似乎有所帮助。
页数:
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;
错误消息:
AssertionError: expected { Object (browser_, then, ...) } to equal true
具体来说:
问题在于代码中的括号。另外,避免使用过时的方法
变化:
await expect(element(by.className('tlid-translation translation').isDisplayed()).to.equal(true)
到
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)
至
await expect(element(by.className('tlid-translation translation')).isDisplayed()).toBeTruthy();
总的来说:
expect()
需要一个承诺。大多数量角器 API 处理
鉴于它必须处理浏览器异步性质的承诺。制作
确定 expect()
得到了承诺
element()
需要 ex 的定位器。 by.css('div')
。确保那是
案.
element(Locator)
上的方法总是 return 量角器
承诺。确保代码以这种方式处理它。
- 我更喜欢 CSS 选择器来获取子元素而不是使用
获取所有元素,然后从该列表中获取一个元素。那样它的
性能更高一点,我们不需要 API 来处理。
希望对您有所帮助..
我想获取元素 child 的文本并测试它是否等于用户输入的字符串。
已经尝试了下面的代码,导致了同样的错误消息
await expect(element(by.className('tlid-translation translation').isDisplayed()).to.equal(true)
以及随机添加一些 .eventually 或检查 element.all,但其中 none 似乎有所帮助。
页数:
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;
错误消息:
AssertionError: expected { Object (browser_, then, ...) } to equal true
具体来说:
问题在于代码中的括号。另外,避免使用过时的方法
变化:
await expect(element(by.className('tlid-translation translation').isDisplayed()).to.equal(true)
到
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)
至
await expect(element(by.className('tlid-translation translation')).isDisplayed()).toBeTruthy();
总的来说:
expect()
需要一个承诺。大多数量角器 API 处理 鉴于它必须处理浏览器异步性质的承诺。制作 确定expect()
得到了承诺element()
需要 ex 的定位器。by.css('div')
。确保那是 案.element(Locator)
上的方法总是 return 量角器 承诺。确保代码以这种方式处理它。- 我更喜欢 CSS 选择器来获取子元素而不是使用 获取所有元素,然后从该列表中获取一个元素。那样它的 性能更高一点,我们不需要 API 来处理。
希望对您有所帮助..