我正在使用Spectron测试Electron / React应用程序,它使用WebdriverIO commands API。我想测试一些组件的属性,但我想确保我只在组件重新加载后测试它们。
正常的WebDriverIO等命令,如waitForText()
或waitForExist()
,等待一些更改,但我需要等到组件重绘已经发生。例如,组件已经存在,或者在重绘之前已经有一些文本。这意味着在重绘之前对文本进行任何测试,我将不会测试新文本。是否有一般等待重绘的方法?
答案 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);