我正在寻找有关 SO 问题的更多帮助get a array of elements from findElement(By.className())
这是关于使用 Selenium Webdriver 的 javascript 实现来自动化网站组件。
从引用问题中给出的示例中,我无法弄清楚如何将 allHtml 数组传递回调用方法以及测试逻辑所在的小黄瓜步骤定义。
我已经尝试了几种方法(太多无法记录),并进行了数小时的谷歌搜索。我只是不知道如何从承诺中传回任何东西(一旦解决并且我们定义了 allHtml)。是的,我可以输出到控制台,但这在现实世界的测试场景中没有帮助,我需要根据实际与预期的比较来断言通过或失败。
承诺是痛苦的。它们对我来说是新的,在我把头缠在它们周围之前会很痛。
作为最后的手段(可能是唯一的解决方案),我将研究使用webdriver-sync以避免 webdriver javascript 版本的原生承诺。
任何帮助或指导将不胜感激,如果可能的话,一旦完全解决,如何将事情从承诺中传回。在我看来,Promise 似乎是关于在它们准备好时使用它们,而不是之前或之后。
谢谢,艾尔。
AddApplicationPage.prototype.getFilteredAppLibraryTemplates = function (context) {
var eleArray = this.getAppLibraryTemplateIcons(context);
return eleArray;
}
AddApplicationPage.prototype.getAppLibraryTemplateIcons = function (context) {
var pendingElements = context.driver.findElements(By.className('appLibrary-templateIcon'))
pendingElements.then(function (elements) {
var pendingHtml = elements.map(function (elem) {
return elem.getInnerHtml();
});
promise.all(pendingHtml).then(function (allHtml) {
// how do i pass allHtml back up the food chain
// so i can do some comparison to the expected list
});
});
}