【问题标题】: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


    【解决方案1】:

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

    有没有可以标记的类名?

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-03
        • 1970-01-01
        • 1970-01-01
        • 2019-10-31
        • 1970-01-01
        • 2016-12-21
        相关资源
        最近更新 更多