3

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

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

4

2 回答 2

5

您可以使用自定义的“waitUntil”命令来等待任何事情。您需要弄清楚您在等待什么,或者如何判断组件已被重绘,但这应该是可能的。

有没有可以标记的类名?

此外,“waitFor”命令确实带有否定标志,允许您等待元素停止存在或停止包含文本。那可能有用。

于 2018-03-08T14:40:08.050 回答
1

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

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

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

const selector = '//*p[text()="Burgers"]';
browser.waitForExist(selector);
于 2019-06-06T20:41:22.173 回答