【问题标题】:How to use intern leadfoot waitForDeletedByXpath function?如何使用实习生leadfoot waitForDeletedByXpath函数?
【发布时间】:2018-03-18 16:43:27
【问题描述】:
在什么情况下我可以使用实习生的 Leadfoot waitForDeletedByXpath 功能?从文档中,我了解到此方法等待元素在 Page 中变得不可见。但是在实施时似乎并非如此。我使用的场景如下:
我的应用程序中有一个页面,我可以在其中搜索带有一些预定义参数的数据。单击搜索按钮后,页面上会出现加载图标,直到数据加载到数据网格中,加载图标在数据加载后消失。所以我试图使用这个函数来等到加载图标从页面上消失,这样我就可以毫无问题地读取数据网格中的数据,但它似乎不是那样工作的。
有人可以说明一下这个功能是如何工作的,并指出我正确的方向来实现我想要做的事情。
谢谢
【问题讨论】:
标签:
javascript
ui-automation
typescript-typings
intern
leadfoot
【解决方案1】:
我相信这里发生的事情是对 waitForDeletedByXPath 方法的轻微误解。
这个方法的文档说的是:
“等待此元素内与给定名称属性匹配的所有元素被销毁。”
当您的加载图标消失时,它很可能仍然是 DOM 的一部分,尽管它只是设置为不可见。此方法期望元素不再是 DOM 的一部分。
根据我的经验,您需要做的是为您的加载图标设置自己的“等待元素不可见”方法。
例如:
return this.remote
.then(function () {
const waitForLoadingIconNotDisplayed = function (remoteSession) {
return remoteSession
.findByCssSelector('your_loading_icon_css_selector')
.isDisplayed()
.then(function (isDisplayed) {
if (isDisplayed) {
return waitForLoadingIconNotDisplayed(remoteSession);
}
return true;
});
};
return Promise.all([waitForLoadingIconNotDisplayed(this.parent)]);
})
这将循环直到满足条件,即您的加载图标不再设置为使用 Promise.all() 调用在 UI 中显示。
希望这有助于引导您走上正确的道路!