相关疑难解决方法(0)

在条件求值为true时获取元素(扩展ElementArrayFinder)

我们有一个菜单表示为一个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>
Run Code Online (Sandbox Code Playgroud)

在位置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 = []; …
Run Code Online (Sandbox Code Playgroud)

javascript iteration selenium selenium-webdriver protractor

18
推荐指数
1
解决办法
987
查看次数