【问题标题】:Make WebdriverIO wait for a specific component to reload让 WebdriverIO 等待特定组件重新加载
【发布时间】:2018-03-06 23:25:59
【问题描述】:
我正在使用 Spectron 测试一个 Electron/React 应用程序,它使用 WebdriverIO commands API。我想测试某些组件的属性,但我想确保仅在组件重新加载后才测试它们。
像waitForText() 或waitForExist() 这样的普通WebDriverIO 等待命令,等待一些更改,但我需要等到组件重绘发生。例如,组件在重绘之前已经存在或已经有一些文本。这意味着对文本的任何测试都将在重绘之前进行,并且我不会测试新文本。有没有等待重绘的一般方法?
【问题讨论】:
标签:
e2e-testing
webdriver-io
spectron
【解决方案2】:
对于等待更改文本的特定问题,另一种解决方案是使用 XPath 选择器。 XPath 语言将 HTML 页面视为一棵树,但除其他外,文本也是该树中的一个单独节点。与 CSS 选择器不同,您可以根据其内部文本轻松选择元素。看到这个article。
因此,如果我的 XPath 选择器使用文本“谓词”,那么我可以使用来自 webdriver API 的标准 waitForExist 命令。
例如,假设我的p 元素,在重绘之后,应该有文本“汉堡”。它在重绘之前确实存在,但它有一些其他文本。只有当它有新的下一个时才选择它:
const selector = '//*p[text()="Burgers"]';
browser.waitForExist(selector);