量角器:同一页面上的两个下拉菜单,只能从一个下拉菜单中成功选择元素

时间:2017-04-21 09:31:11

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

我正在使用Protractor运行自动脚本,在其中一个页面上有两个位于下方/上方的下拉菜单。他们中的两个看起来完全相同,只是他们有不同的ng模型名称等。我可以成功地从其中一个下拉菜单中选择一个元素,但我不能为另一个。对于为什么一个有效而另一个无效,这有点破坏我的头脑。这是下拉菜单的代码,我可以在其中选择元素

<select class="form-control ng-pristine ng-invalid ng-invalid-required" ng-model="user.sourceOfFunds" required="" ng-class="{submitted:invalid}">
                <option value="">Select</option>
                <option value="Savings">Deposit</option>
                <option value="Inherited">Current</option>
                <option value="Other">Savings</option>
                        </select>

element(by.model('user.sourceOfFunds')).sendKeys('Savings');

我的其他下拉菜单如下:

<select class="form-control ng-pristine ng-invalid ng-invalid-required" ng-model="user.investFigure" required="" ng-class="{submitted:invalid}">
                         <option value="">Select</option>
                         <option value="<20">Less than 20K</option>
                         <option value="20-50">20K-50K</option>
                         <option value="50-100">50K-100K</option>
                         </select>

element(by.model('user.investFigure')).sendKeys('Less than 20K');
or
element(by.model('user.investFigure')).sendKeys('20');

当我尝试从第二个下拉菜单中选择一个项目时,我得到“找不到元素”。我为什么会这样做有点不知所措

1 个答案:

答案 0 :(得分:1)

使用for(int i=0; i < response.length; i++) { System.out.println(response[i]) // prints the toString of a Data object. } 选择下拉选项对我来说似乎很奇怪,即使它有效。鉴于@ alecxe的好建议,也许问题是可见性,但尝试另一种方式,看看sendKeys是否是您的问题。

我在每天多次选择的测试中使用此代码而没有问题。也许它对你有用......

sendKeys

这样打电话......

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