- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
这是 Take elements while a condition evaluates to true (extending ElementArrayFinder) 的后续问题特别是主题和@cvakiitho 的回答。
问题:
执行以下代码后:
var i = 0;
var el = element.all(by.css('ul li a'));
var tableItems = [];
(function loop() {
el.get(i).getText().then(function(text){
if(text){
tableItems.push(el.get(i));
i+=1;
loop();
}
});
}());
tableItems
将包含一组 ElementFinder
实例 - 或者,简单地说 - 一组网络元素。
问题:
是否可以将 ElementFinder
数组转换为 ElementArrayFinder
实例?
动机:
我想要这个的原因是拥有所有方便的 ElementArrayFinder
功能实用程序,例如 map()
, each()
, reduce()
并能够在其上调用 getText()
产生一个 promise ,该 promise 将解析为一个元素文本数组。
最佳答案
Constructor of ElementArrayFinder
基本上需要两个主要参数: Protractor 实例和函数 getWebElements
,它应该返回解析为 Web 元素数组的 promise 。只要每个 ElementFinder
都有一个名为 getWebElement
的方法来获取它的 Web 元素,就可以创建这样一个函数。
var arrayOfElementFinders = [el1, el2, el3];
var getWebElements = function () {
// create array of WebElements from array of ElementFinders
var webElements = arrayOfElementFinders.map(function (ef) {
return ef.getWebElement();
});
// immediately resolve and return promise
return protractor.promise.fulfilled(webElements);
};
现在当所有要求都满足后,就可以创建一个新的 ElementArrayFinder
实例了:
var elArrayFinder = new protractor.ElementArrayFinder(protractor, getWebElements);
为了使其易于使用,我会向 ElementArrayFinder
构造函数添加一个静态方法,并在测试开始之前将其包含在某处:
protractor.ElementArrayFinder.fromArray = function (arrayOfElementFinders) {
var getWebElements = function () {
var webElements = arrayOfElementFinders.map(function (ef) {
return ef.getWebElement();
})
return protractor.promise.fulfilled(webElements);
};
return new protractor.ElementArrayFinder(protractor, getWebElements);
};
并在如下测试中使用它:
var elArrayFinder = protractor.ElementArrayFinder.fromArray(arrayOfElementFinders);
关于javascript - 从 ElementFinder 数组创建 ElementArrayFinder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32599679/
我正在学习 Protractor ,到目前为止这是一段疯狂的旅程,因为我对 Javascript 也很陌生。到目前为止,我了解到 Protractor 对所有 promise 进行排队,并且可以使用
我是使用 Protractor 编写端到端 Javascript 测试的初学者。我一直在尝试识别具有与之关联的文本属性的元素数组。我可以使用 来定位他们 groupedNodeNumbers : El
我们有一个表示为 ul->li 的菜单列表(简化): Menu Item 1 ... Menu Item 2 在
是否可以将 element.all(....) 的结果返回的 ElementArrayFinder 转换为通用数组? 目标是将元素存储在数组中,并使用 push() 从另一个 element.all(
看书学AngularJS,有一个简单 Protractor 测试的例子: it('Should redirect to #/posts/1/sample-title1', function (
是否有官方方法来确定我从函数接收的输入是 ElementFinder(单个 Web 元素)还是 ElementArrayFinder(一组网络元素)。 到目前为止我已经知道了。 if (_.isFun
如果调用 Protractor elementArrayFinder 的 map 函数,它会立即在 DOM 中搜索要映射的元素,这与 $$ 的行为不同等到需要子 elementArrayFinder
这是 Take elements while a condition evaluates to true (extending ElementArrayFinder) 的后续问题特别是主题和@cvak
我正在用 Protractor 编写一个函数来获取列表的所有行元素。该函数检查多种类型的列表。它使用方法 isPresent() 来检查是否存在一种类型的列表。如果不是,它将移至下一个类型。由于 is
我在 Protractor 中遇到一种情况,我想将 ElementArrayFinder getTexts 存储在数组中并从方法返回数组。到目前为止我已经写了这样的方法: static getAllT
我在我的页面对象中声明了这个: this.paginationPageNumberList = element.all(by.repeater("page in pages track by $ind
我正在使用 TypeScript 来自动化 E2E 测试。如果我做一些事情,比如self.all(by.xpath(".//thead/tr/th|.//thead/tr/td")).then...
我正在使用 Protractor 在 Angular 8 应用程序中进行 e2e 测试,目前我无法根据需要使“每个”循环正常工作。在我的页面对象中,我创建了一个返回 ElementArrayFinde
在过去的几年里,我一直在使用以下函数来过滤元素数组,并启用了 Webdriver 的控制流: filterElementsByText (elemList, comparator, locator)
我是 Protractor 的新手,我将它与 chai 和 chai-as-promised 结合使用。目前,当我的 ElementArrayFinder 不包含我需要的元素时,我正试图弄清楚如何最好
我是一名优秀的程序员,十分优秀!