使WebdriverIO等待特定组件重新加载

时间:2018-03-06 23:25:59

标签: e2e-testing webdriver-io spectron

我正在使用Spectron测试Electron / React应用程序,它使用WebdriverIO commands API。我想测试一些组件的属性,但我想确保我只在组件重新加载后测试它们。

正常的WebDriverIO等命令,如waitForText()waitForExist(),等待一些更改,但我需要等到组件重绘已经发生。例如,组件已经存在,或者在重绘之前已经有一些文本。这意味着在重绘之前对文本进行任何测试,我将不会测试新文本。是否有一般等待重绘的方法?

2 个答案:

答案 0 :(得分:3)

您可以使用the custom 'waitUntil' command等待任何事情。您需要弄清楚您正在等待什么,或者如何判断该组件是否已经重新绘制,但它应该是可能的。

是否有可以标记的班级名称?

此外,' waitFor'命令确实采用否定标志,允许您等待元素停止存在或停止文本。这可能有用。

答案 1 :(得分:0)

针对此有关等待更改文本的特定问题的另一种解决方案是使用XPath选择器。 XPath语言将HTML页面视为一棵树,但是文本以及其他内容也是该树中的一个单独节点。与CSS选择器不同,您可以轻松地根据元素的内部文本选择元素。参见此article

因此,如果我的XPath选择器使用文本“谓词”,那么我可以使用标准的waitForExist命令。

例如,假设我的p元素在重绘后应具有文字“ Burgers”。重绘之前它确实存在,但是还有其他一些文字。仅在有新的下一个时选择它:

const selector = '//*p[text()="Burgers"]';
browser.waitForExist(selector);