【问题标题】:Can't select element from drop down menu E2E testing using Protractor [duplicate]无法使用量角器从下拉菜单 E2E 测试中选择元素 [重复]
【发布时间】:2017-09-15 16:05:55
【问题描述】:

有很多方法可以做到这一点,我已经尝试了很多,但是在进行自动化测试时我无法从下拉菜单中选择一个项目。

“选择”是出现在下拉菜单中的默认选项,我希望自动化测试选择其中一个元素,不管是哪一个

这是 HTML 代码

<select class="form-control ng-pristine ng-invalid ng-invalid-required" ng-model="user.investmentAmount" required="" ng-class="{submitted:invalid}">
                   <option value="">Select</option>
                   <option value="<50"> 50K</option>
                   <option value="50-100">100K</option>
                   <option value="100-250">250K</option>
                   <option value="250-500">500K</option>
                  </select>

这是我的量角器文件

var selectDropdownbyNum = function ( element, optionNum ) {
    if (optionNum){
      var options = element(by.cssContainingText("Select"))  
        .then(function(options){
          options[2].click();
        });
    }
  };
  browser.sleep(2000);

我尝试过使用 by.cssElement、by.xpath 等。 当我运行上述内容时,我没有收到任何错误,但它也没有选择任何元素。 谢谢

【问题讨论】:

    标签: node.js jasmine protractor angularjs-e2e e2e-testing


    【解决方案1】:

    选择肯定是一只奇怪的鸭子。我通常只是按文本单击选项(如果可能)。例如。你应该能够做这样的事情......

    var selectOptionByText = function(text) {
        return element(by.cssContainingText('option', text)).click();
    };
    

    【讨论】:

    • 感谢您的回复,我最终在同一页面上得到了一个不同的下拉菜单,可以使用:element(by.model('user.sourceOfFunds')).sendKeys('Savings'); 上面的行对我来说很好,但是当我尝试 element(by.model('user.investmentAmount')).sendKeys('50-100');element(by.model('user.investmentAmount')).sendKeys('100k');我得到元素不可见。不知道为什么一个有效而另一个无效
    【解决方案2】:

    一旦你点击 //select[@ng-model='user.investmentAmount'] 使用 xpath, 像“browser.sleep(2000)”这样等待,然后使用 //option[text()='100K'] 点击。

    【讨论】:

    • 感谢您的回复,我最终在同一页面上得到了一个不同的下拉菜单,可以使用:element(by.model('user.sourceOfFunds')).sendKeys('Savings'); 以上行对我来说很好,但是当我尝试element(by.model('user.investmentAmount')).sendKeys('50-100');element(by.model('user.investmentAmount')).sendKeys('100k'); 时我得到元素不可见。不知道为什么一个有效而另一个无效
    【解决方案3】:

    这是因为您只选择了一个包含“选择”值和期望数组的选项,

    试试下面,首先按型号获取选择框,然后按以下方式获取所有选项 数组中的html标签名称

    browser.element(by.model('user.investmentAmount')).all(by.tagName('option')).
       then(function(items){
            items[2].click(); 
    }); 
    

    【讨论】:

    • 感谢您的回复,我最终在同一页面上获得了一个不同的下拉菜单,可以使用:element(by.model('user.sourceOfFunds')).sendKeys('Savings');上面的行对我来说很好,但是当我尝试 element(by.model('user.investmentAmount')).sendKeys('50-100'‌​);或 element(by.model('user.investmentAmount')).sendKeys('100k');我得到元素不可见。不知道为什么一个有效而另一个无效
    • 如果您与它无关,最好打开其他问题......但是对于这个问题,要么解决它要么关闭......以便将来其他人可以从中受益,,,跨度>
    猜你喜欢
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多