node.js - Protractor:同一页面有两个下拉菜单,只能从一个下拉菜单中成功选择元素

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

我正在使用 Protractor 运行自动化脚本,其中一个页面上有两个下拉菜单,位于彼此的下方/上方。它们两个看起来相同,只是它们有不同的 ng-model 名称等。我可以从一个下拉菜单中成功选择一个元素,但不能从另一个下拉菜单中选择一个元素。为什么一个有效而另一个无效,这让我很困惑。这是下拉菜单的代码,我可以在其中选择一个元素

<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');

当我尝试从第二个下拉菜单中选择一个项目时,出现“找不到元素”。我有点不明白为什么会发生这种情况

最佳答案

使用 sendKeys 选择下拉选项对我来说似乎很奇怪,即使它有效。鉴于 @alecxe 的良好建议,也许问题在于可见性,但请尝试另一种方法,看看 sendKeys 是否是您的问题。

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

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

如此称呼...

selectOptionByText('Less than 20');
selectOptionByText('20');

关于node.js - Protractor:同一页面有两个下拉菜单,只能从一个下拉菜单中成功选择元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43539024/

相关文章:

javascript - 如何使用 mustache.js 验证 mustache 模板?

Angular 单元测试表单验证 - 控制保持不变

selenium-webdriver - 是否应该在页面对象之外提供元素?

protractor - 如何在 Protractor 中处理表格数据

PHP 向 Node/Socket.IO 服务器发送消息

javascript - Node.js中的 `listen`函数在哪里定义

node.js - CoffeeScript 到 Node.js ")"的语法问题

javascript - 创建一个新的 Maven 目标来运行 Jasmine 测试

angularjs - Angular 单元测试 : Argument 'fn' is not a function, 得到对象

javascript - 如何让 Protractor 的部分等待或同步?