我正在尝试声明在媒体库叠加层页面上看到的文本。我想要的只是代码来验证文本是否存在,如果存在,则资产与期望的文本匹配。
由于某些原因,我一直无法通过测试。下面是我用可视代码编写的代码:
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/