我正在尝试声明在媒体库叠加层页面上看到的文本。我想要的只是代码来验证文本是否存在,如果存在,则资产与期望的文本匹配。

由于某些原因,我一直无法通过测试。下面是我用可视代码编写的代码:

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');


我在这里想念什么?

最佳答案

不是魔术师,但是您应该在控制台中出现browser.getText is not a function错误,因为getText()方法是在element对象而不是browser对象中定义的。阅读完整的API日志here

因此,您的代码应为:

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');




我想补充一下,使用webdriver协议API也可以使用browser以对象为中心的方法。因此,我们的代码变为:

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推荐的方法将分别使用$$$(元素和元素)。但想给您更广阔的视野。

关于javascript - 尝试在WebdriverIO中声明getText时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59671638/

10-13 02:21