【问题标题】:Selecting a certain dropdown element using xpath (or better alternative)使用 xpath 选择某个下拉元素(或更好的选择)
【发布时间】:2016-10-28 03:57:36
【问题描述】:

如何在此下拉列表中选择某个元素。

<li role="presentation" ng-repeat="match in $matches" ng-class="{active: $isActive($index)}" class="ng-scope active">
    <a style="cursor: default" role="menuitem" tabindex="-1" ng-click="$select($index, $event)">
        <!-- ngIf: $isMultiple && $isActive($index) -->
            <i class="glyphicon glyphicon-ok pull-right" ng-if="$isMultiple &amp;&amp; $isActive($index)"></i>
        <!-- end ngIf: $isMultiple && $isActive($index) --> 
        <span ng-bind="match.label" class="ng-binding">Streamer</span>
    </a>
</li> 

我试过了

element(by.model('selectedAvailable')).click();
element(by.xpath('..//ul//li[1]')).click().

还有这个:

element(by.repeater('match in $matches').row(0)).click();

【问题讨论】:

    标签: javascript selenium protractor


    【解决方案1】:

    另一种方法是使用by.cssContainingText

    element(by.cssContainingText('[ng-repeat="match in $matches"]', 'Streamer')).click();
    

    【讨论】:

    • 你能看到这个吗?请帮忙..stackoverflow.com/questions/40284366/…
    • 嘿弗洛伦特,任何想法为什么它没有找到元素?消息:失败:使用定位器找不到元素:by.cssContainingText("[ng-repeat="match in $matches"]", "Streamer") 堆栈:NoSuchElementError:使用定位器找不到元素:by.cssContainingText("[ng -repeat="match in $matches"]", "Streamer")
    • 该元素可能尚未创建。找服务员试试:browser.wait(EC.presenceOf(element(...)), 15000);
    • 通过使用等待,该错误消失了,因此创建了元素。该元素没有被“点击”。它似乎再次单击下拉菜单,而不是此列表中的项目,例如“Streamer”。
    【解决方案2】:

    我会filter() 它,假设您知道“Streamer”标签并想要选择它:

    var matches = element.all(by.repeater('match in $matches')); 
    matches.filter(function (match) {
        return match.element(by.binding("match.label")).getText().then(function (text) {
            return text === "Streamer";
        });
    }).first().click();
    

    或者,以类似的方式使用evaluate() 而不是getText()

    var matches = element(by.repeater('match in $matches')); 
    matches.filter(function (match) {
        return match.evaluate("match.label").then(function (label) {
            return label === "Streamer";
        });
    }).first().click();
    

    【讨论】:

    猜你喜欢
    • 2013-02-04
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 2011-11-06
    • 2011-05-07
    • 2022-07-01
    相关资源
    最近更新 更多