'Expect' WebdriverIO 中带等待参数的函数不起作用
'Expect' function with wait parameter in WebdriverIO does not work
我是 webdriverio 的新手,目前 运行 遇到了问题。我需要在 Java 中实现类似于 awaitility 的东西 - 让 expect() 函数在失败之前尝试使用轮询间隔一段时间来成功断言。我已经试过了https://webdriver.io/docs/api/expect-webdriverio.html,所以我设置了
beforeSession: function (config, capabilities, specs) {
require('expect-webdriverio').setOptions({ wait: 50000 })
},
在我的 wdio.conf.ts 中,但它对我不起作用。它似乎不等待超时,只是在我的 expect() 被调用后立即失败。你能告诉我我可能做错了什么吗?
更新:
我的期望:
it('should be able to save stuff', () => {
expect(mainPage.getDataForRow('My row', 'My row')).toBe('Hello');
});
它适用于内置匹配器。例如 expect(elem).toHaveElementProperty('height', 23)
或 expect(myInput).toHaveAttributeContaining('class', 'form')
。这些高阶匹配器内部已经包含“轮询”逻辑。但是,在您的代码示例中,您在使用 mainPage.getDataForRow('My row', 'My row')
执行此行并尝试将其与 'Hello'
进行比较的确切时刻获取元素的值。正确的方法是使用开箱即用的正确匹配器,而不是“获取”方法。但是如果你的情况非常具体,你可以尝试自己实现具有轮询行为的助手。示例:
function expectToContainText(elem, text) {
return borser.wait(() => element.getAttribute('innerText').then(innerText => innerText == text));
}
我是 webdriverio 的新手,目前 运行 遇到了问题。我需要在 Java 中实现类似于 awaitility 的东西 - 让 expect() 函数在失败之前尝试使用轮询间隔一段时间来成功断言。我已经试过了https://webdriver.io/docs/api/expect-webdriverio.html,所以我设置了
beforeSession: function (config, capabilities, specs) {
require('expect-webdriverio').setOptions({ wait: 50000 })
},
在我的 wdio.conf.ts 中,但它对我不起作用。它似乎不等待超时,只是在我的 expect() 被调用后立即失败。你能告诉我我可能做错了什么吗?
更新: 我的期望:
it('should be able to save stuff', () => {
expect(mainPage.getDataForRow('My row', 'My row')).toBe('Hello');
});
它适用于内置匹配器。例如 expect(elem).toHaveElementProperty('height', 23)
或 expect(myInput).toHaveAttributeContaining('class', 'form')
。这些高阶匹配器内部已经包含“轮询”逻辑。但是,在您的代码示例中,您在使用 mainPage.getDataForRow('My row', 'My row')
执行此行并尝试将其与 'Hello'
进行比较的确切时刻获取元素的值。正确的方法是使用开箱即用的正确匹配器,而不是“获取”方法。但是如果你的情况非常具体,你可以尝试自己实现具有轮询行为的助手。示例:
function expectToContainText(elem, text) {
return borser.wait(() => element.getAttribute('innerText').then(innerText => innerText == text));
}