我们有一个以ul->li
列表形式表示的菜单(简化):
<ul class="dropdown-menu" role="menu">
<li ng-repeat="filterItem in filterCtrl.filterPanelCfg track by filterItem.name"
ng-class="{'divider': filterItem.isDivider}" class="ng-scope">
<a href="" class="ng-binding"> Menu Item 1</a>
</li>
...
<li ng-repeat="filterItem in filterCtrl.filterPanelCfg track by filterItem.name"
ng-class="{'divider': filterItem.isDivider}" class="ng-scope">
<a href="" class="ng-binding"> Menu Item 2</a>
</li>
</ul>
在位置N处的某个地方有一个分隔符,可以通过 评估
filterItem.isDivider
或检查a
链接的文本来识别分隔符(如果使用分隔符,则为空)。
现在,目标是获取位于分隔线之前的所有菜单项。您将如何解决这个问题?
我当前的方法相当通用-
扩展ElementArrayFinder
和添加takewhile()
功能(受Python启发itertools.takewhile()
)。这是我如何实现它(基于filter()
):
protractor.ElementArrayFinder.prototype.takewhile = function(whileFn) {
var self = this;
var getWebElements = function() {
return self.getWebElements().then(function(parentWebElements) {
var list = [];
parentWebElements.forEach(function(parentWebElement, index) {
var elementFinder =
protractor.ElementFinder.fromWebElement_(self.ptor_, parentWebElement, self.locator_);
list.push(whileFn(elementFinder, index));
});
return protractor.promise.all(list).then(function(resolvedList) {
var filteredElementList = [];
for (var index = 0; index < resolvedList.length; index++) {
if (!resolvedList[index]) {
break;
}
filteredElementList.push(parentWebElements[index])
}
return filteredElementList;
});
});
};
return new protractor.ElementArrayFinder(this.ptor_, getWebElements, this.locator_);
};
而且,这是我的使用方式:
this.getInclusionFilters = function () {
return element.all(by.css("ul.dropdown-menu li")).takewhile(function (inclusionFilter) {
return inclusionFilter.evahtml" target="_blank">luate("!filterItem.isDivider");
});
};
但是,测试只是挂直到jasmine.DEFAULT_TIMEOUT_INTERVAL
在到达takewhile()
呼叫。
如果将console.log
s放入循环中和之后,我可以看到它正确地将元素推到分隔符之前,并在到达分隔符时停止。我可能在这里错过了一些东西。
使用量角器2.2.0。
另外,让我知道我是否使问题复杂化了。
也许我错过了一些东西,但是ul li a
当它们从getText()给您一些东西时,您是否不能只遍历这些元素,然后将它们存储到某个数组中,或者直接在该循环中对其进行某些处理呢?
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();
}
});
}());
我有一个关于python中一些代码的问题。我试图在3个不同的列中满足条件TRUE时提取第一行的索引。这是我正在使用的数据: 只有当有3个“真”条件时,我才需要得到索引号: 非常感谢。
Q.while循环条件是作为一个整体进行计算,还是在决定是否进入循环之前一次计算一个条件?
问题内容: 我必须从D / B检索一组列值并将其作为条件进行检查。 例如,我将有像字符串,在d / B柱。(值是一直比较的值)。我将在代码中声明一个变量值,我应该评估这种情况。 我怎样才能做到这一点??任何帮助都受到赞赏。谢谢。 问题答案: 这是使用标准(Java 1.6+)脚本库的示例:
我想了解Selenium是如何评估页面的。 基于这个测试,PhantomJS如何评估页面是令人困惑的。我一直认为它会检查DOM,但对于元素文本,它会基于可见性进行评估!
我在查询两个Oracle数据库时遇到问题。 查询是: (NULL实际上是一个参数,传递给查询,查询可能为空,所以我缩短了查询)。 在生产数据库上,它工作正常,响应为NULL。 在dev DB上,我发现了一个错误,即TRUNC不能应用于NUMBER,需要DATE(ORA-00932)。 显然,生产数据库跳过了OR之后条件中的所有内容,开发人员执行OR之后的部分。 我确实知道通过将CAST(MY_PA
cmf_get_file_extension($filename) 功能 获取文件扩展名 参数 $filename: string 文件名 返回 string 文件扩展名