我试图断言在媒体画廊覆盖页面上看到的文本。我只想让代码验证文本是否存在,如果是的话,它的资产与预期的文本匹配。
出于某种原因,我总是考试不及格。下面是我用可视化代码编写的代码:
let expSuccessARMessage = "See it in Your Space (Augmented Reality) is currently only available using an AR compatible Apple device (iOS 12 or above)."
let successARMessage = browser.getText(page.pageElements.arMessage);
console.log(successARMessage);
assert(successARMessage === expSuccessARMessage, 'Success message');我在这里错过了什么?
发布于 2020-01-12 14:12:03
不是魔术师,但是您应该在控制台中获得browser.getText is not a function错误,因为getText()方法是在element对象中定义的,而不是在browser对象中定义的。阅读完整的API日志这里。
所以你的代码应该是:
let expectedText = "Your long text here"
let foundText = $(page.pageElements.arMessage).getText();
// Considering 'page.pageElements.arMessage' is a valid selector for targeted element
console.log(`Found the following text: ${foundText}`);
assert.equal(expectedText, foundText, 'This is actually the ERROR message');我想补充的是,还可以使用browser协议API提供以网络驱动程序对象为中心的方法。因此,我们的代码变成:
let expectedText = "Your long text here"
let elementObject = browser.findElement('css selector', page.pageElements.arMessage);
// Considering 'page.pageElements.arMessage' is a valid selector for targeted element
let foundText = browser.getElementText(elementObject.ELEMENT);
console.log(`Found the following text: ${foundText}`);
assert.equal(expectedText, foundText, 'This is actually the ERROR message');后一种方法已经过时,WebdriverIO v5推荐的方法是使用$,分别是$$ (element &element)。但想给你一个更广阔的视角。
发布于 2021-10-14 11:38:23
如果将元素定义为对象存储库,如下所示:
get OtpDescriptionText () { return '//div[@class="otp-description"]'; }为了实现控制台、或断言/预期,您需要使用以下元素:
let elem1 = await $(RegistratonPage.OtpDescriptionText);
console.log(await elem1.getText());或
await expect($(RegistratonPage.OtpDescriptionText)).toHaveTextContaining('We just need to check this phone number belongs to you.')如果不使用$,则会引发错误
https://stackoverflow.com/questions/59671638
复制相似问题