WebdriverIO waitfor方法无法按预期工作

时间:2018-02-07 09:40:10

标签: selenium-chromedriver wait webdriver-io

我正在研究一组使用大量暂停的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()

我不喜欢这个解决方案,因为它需要复制定位器,这将在未来使支持变得更加困难。

任何人都可以解释为什么第一个选项可能不适合我吗?

1 个答案:

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