【问题标题】:Webdriverio 5: how to get the latest DOM objectsWebdriverio 5:如何获取最新的 DOM 对象
【发布时间】:2020-03-24 17:27:54
【问题描述】:

我目前正在开发基于 REact 的 CMS 应用程序。它是一个基于多个轮播的表单。我正在尝试定位一个元素,但它无法在 webdriverio 实现中定位。但是当我手动尝试时,相同的 xpath 效果很好。我认为 webdirverio 仍然保留初始页面 loa 中的旧 DOM 对象,并且在执行时没有获取最新的对象。我无法刷新页面,因为它会将用户旅程带回第 1 步。你能告诉我如何在 webdriverio.xml 中获取更新的 DOM 对象吗?

元素 ("//div[@id="question"]//label[.="preferred option"]") 3000ms 后仍然不显示

【问题讨论】:

    标签: typescript selenium selenium-webdriver webdriver-io


    【解决方案1】:

    您可以尝试手动执行自动化中的精确场景。如果您没有获得准确的预期 DOM,那么这将是步骤执行问题。 没有最新的DOM这样的概念

    【讨论】:

    • 更新了以下回答 Yogesh 中的元素信息。这将使我更了解我所说的最新。
    【解决方案2】:

    尝试使用 waitForExist。等到您的定位器存在于 DOM 中。

    https://webdriver.io/docs/api/element/waitForExist.html

    Let webelm = await browser.$('your locator');
    webelm.waitForExist();
    

    稍后您可以继续对元素进行测试。

    例如:点击功能应该是这样的

    async click(element,time) {
            const elem = await browser.$(element);
            await elem.waitForExist(time);
            await elem.isDisplayed(time);
            await elem.click();
        }
    

    【讨论】:

    • 元素 ("//div[@id="question"]//label[.="preferred option"]") 在 3000 毫秒后仍然不存在
    • 感谢 Bharath 的回复。但不幸的是,它因上述错误消息而失败。问题在于该元素是可用且可见的。但是由于 wdio 保留了它无法找到的第一个页面源,因此无法使用 reloadSession 或刷新,因为这会将表单设置回步骤 1。
    • 可能需要再等一会儿。您是否尝试添加 webelm.waitForExist(10000)?
    • 3000 毫秒就足够了。我可以看到带有预期值的下拉列表。只是想了解如何在 webdriverio 中引用 "$" 驱动程序值以在其中包含最新的 DOM
    • the-internet.herokuapp.com/dynamic_controls。您的应用程序与此类似?
    猜你喜欢
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    相关资源
    最近更新 更多