我正在研究一组使用大量暂停的webdriverIO测试。为了使框架更加健壮,我想摆脱暂停并引入waitfor语句
我已经浏览了一些演练,其中大多数都提出了一些内容:
var decrease = browser.$("//*[@id='somebutton");
decrease.waitForExist(5000)
decrease.click()
这在90%的时间内不起作用,但是返回错误消息:
使用给定的搜索参数(“// * [@ id ='somebutton'”)无法在页面上找到元素。 (当我完全取消等待时,我得到的消息几乎相同)
我已经尝试了waitForExist和waitForVisible但没有成功
我玩过一个但是,发现以下方式确实有效:
browser.$("//*[@id='somebutton").waitForVisible(5000);
browser.$("//*[@id='somebutton").click()
我不喜欢这个解决方案,因为它需要复制定位器,这将在未来使支持变得更加困难。
任何人都可以解释为什么第一个选项可能不适合我吗?
答案 0 :(得分:1)
这应该可以解决问题:
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');