【问题标题】:Drop down selection is not working in protractor [closed]下拉选择在量角器中不起作用[关闭]
【发布时间】:2015-12-29 02:14:39
【问题描述】:

帮助我解决这个问题。我必须从下面的下拉列表中选择值是我的定位器。我尝试过 Css、XPath 和 Repeater 来选择值。 CSS 和 Xpath 显示“未找到元素”。使用中继器时,它不显示任何错误,也不选择下拉列表中的值。我还需要解释什么。出现超时问题

<select class="form-control">
<option value="Select peripheral">Select peripheral</option>
<!-- ngRepeat: p in peripheral --><option data-ng-repeat="p in peripheral" value="" class="ng-binding ng-scope">CUCM_PG_1</option>
<!-- end ngRepeat: p in peripheral -->
</select>

【问题讨论】:

  • 我还需要解释什么。它显示超时问题。

标签: javascript angularjs selenium automation protractor


【解决方案1】:

您可能应该尝试等待选项加载到选择下拉列表中。下面的代码应该适用于您在代码中给出的唯一 option 元素 -

var elem = $('.form-control');
var optionsToSelect = elem.element(by.repeater('p in peripheral'));
elem.click().then(function(){
    browser.waitForAngular().then(function(){
        browser.wait(protractor.ExpectedConditions.visibilityOf(optionsToSelect),10000)
        .then(function(){
            optionsToSelect.click();
        });
    });
});

如果上面的代码仍然没有点击下拉元素,那么尝试在点击选项元素之后发送一个回车命令。方法如下-

browser.actions().sendKeys( protractor.Key.ENTER ).perform();

同样,您可以使用元素定位器选择您想要的任何选项。您需要做的就是将var optionsToSelect = elem.element(by.repeater('p in peripheral')); 替换为您的选项定位器。

如果您在下拉菜单中有多个选项,并且您想依次选择所有选项,您可以通过遍历元素来实现。方法如下-

var elem = $('.form-control');
var optionsToSelect = elem.element.all(by.repeater('p in peripheral')); //get all options with the repeater
optionsToSelect.each(function(eachOption){
    eachOption.click().then(function(){
        //Perform any operation that you want after clicking each option
        browser.sleep(1000);
    });
});

希望对你有帮助。

【讨论】:

  • 不,它不起作用错误:两次尝试都显示 10427 毫秒后等待超时
  • 我非常抱歉@Girish Sortur 实际上使用了其他一些 url,它在下拉菜单中没有选项。现在你的代码正在工作。当有多种选择时该怎么办?请帮助我,以便将来使用它
  • 非常感谢@Girish Sortur
猜你喜欢
  • 2015-04-17
  • 1970-01-01
  • 2013-09-30
  • 2016-01-29
  • 1970-01-01
  • 2013-06-19
  • 2015-10-28
  • 1970-01-01
  • 2018-11-14
相关资源
最近更新 更多