WebdriverIO waitfor 方法无法按预期工作
WebdriverIO waitfor methods don't work as expected
我正在处理一组使用大量停顿的 webdriverIO 测试。为了使框架更健壮,我想摆脱停顿并引入 waitfor 语句
我浏览了一些演练,其中大部分建议如下:
var decrease = browser.$("//*[@id='somebutton");
decrease.waitForExist(5000)
decrease.click()
然而,这在 90% 的情况下都不起作用,返回错误消息:
无法使用给定的搜索参数(“//*[@id='somebutton'”)在页面上找到元素。 (与我完全删除等待时收到的消息几乎相同)
我尝试了 waitForExist 和 waitForVisible 都没有成功
我玩了一个but,发现下面的方法确实有效:
browser.$("//*[@id='somebutton").waitForVisible(5000);
browser.$("//*[@id='somebutton").click()
虽然我不喜欢这个解决方案,因为它需要复制定位器,这将使将来的支持更加困难。
谁能解释一下为什么第一个选项可能对我不起作用?
这应该可以解决问题:
var selector = "//*[@id='somebutton";
browser.waitForExist(selector, 5000);
browser.click(selector);
此外,api 文档中的示例显示它是这样完成的。请注意,他们省略了 browser.
部分。
var notification = $('.notification');
notification.waitForExist(5000);
也许这是你的问题?不过这两种方法都应该有效。
最后一件事,如果不是绝对必要,则不必为此元素使用 xpath。对于 id 使用 css 选择器更容易。
var decrease = $('#somebutton');
我正在处理一组使用大量停顿的 webdriverIO 测试。为了使框架更健壮,我想摆脱停顿并引入 waitfor 语句
我浏览了一些演练,其中大部分建议如下:
var decrease = browser.$("//*[@id='somebutton");
decrease.waitForExist(5000)
decrease.click()
然而,这在 90% 的情况下都不起作用,返回错误消息:
无法使用给定的搜索参数(“//*[@id='somebutton'”)在页面上找到元素。 (与我完全删除等待时收到的消息几乎相同)
我尝试了 waitForExist 和 waitForVisible 都没有成功
我玩了一个but,发现下面的方法确实有效:
browser.$("//*[@id='somebutton").waitForVisible(5000);
browser.$("//*[@id='somebutton").click()
虽然我不喜欢这个解决方案,因为它需要复制定位器,这将使将来的支持更加困难。
谁能解释一下为什么第一个选项可能对我不起作用?
这应该可以解决问题:
var selector = "//*[@id='somebutton";
browser.waitForExist(selector, 5000);
browser.click(selector);
此外,api 文档中的示例显示它是这样完成的。请注意,他们省略了 browser.
部分。
var notification = $('.notification');
notification.waitForExist(5000);
也许这是你的问题?不过这两种方法都应该有效。
最后一件事,如果不是绝对必要,则不必为此元素使用 xpath。对于 id 使用 css 选择器更容易。
var decrease = $('#somebutton');