我有一个部分使用Angular UI http://angular-ui.github.io/的select2元素

我遇到的问题是该元素是必需的,虽然我已成功通过以下代码设置字段,但由于外部更改而不确定Angular的模型不能更新,因此不会删除所需的属性,我不知道如何要么提供$scope.apply(),要么使用Angular的另一个函数来继续测试.

首先允许运行直接jQuery函数:(取自How to execute jQuery from Angular e2e test scope?)

angular.scenario.dsl('jQueryFunction',function() {
return function(selector,functionName /*,args */) {
    var args = Array.prototype.slice.call(arguments,2);
    return this.addFutureAction(functionName,function($window,$document,done) {
        var $= $window.$; // jQuery inside the iframe
        var elem = $(selector);
        if (!elem.length) {
            return done('Selector ' + selector + ' did not match any elements.');
        }
        done(null,elem[functionName].apply(elem,args));
    });
};
});

然后更改字段值:

jQueryFunction('#s2id_autogen1','select2','open');
    jQueryFunction('#s2id_autogen1',"val","US");
    jQueryFunction('#s2id_autogen1','data',{id: "US",text: "United States"});
    jQueryFunction('.select2-results li:eq(3)','click');
    jQueryFunction('#s2id_autogen1','trigger','change');
    jQueryFunction('#s2id_autogen1','close');
    input('request._countrySelection').enter('US');

请注意,并不是所有这些函数都需要反映ui的变化,而只是我用来尝试使用的所有功能……

为了让这个工作起作用,我咨询了Brian的答案和sinelaw,但在我的案例中仍然失败了两个原因:

>点击’div#s2id_autogen1’不会为我打开select2输入,我使用的选择器是’div#s2id_autogen1 a’
>获取select2元素我会得到ElementNotVisibleError,可能是因为我的select2在一个bootstrap模式中,所以我明确地等待元素在点击它之前可见(你可以阅读我读过的原始提示使用这个here).

结果代码是:

function select2ClickFirstItem(select2Id) {
        var select2Input;

        // Wait for select2 element to be visible
        browser.driver.wait(function() {
            select2Input =  element(by.css('#s2id_' + select2Id + ' a'));
            return select2Input;
        }).then(function() {
            select2Input.click();

            var items = element.all(by.css('.select2-results-dept-0'));
            browser.driver.wait(function () {
                return items.count().then(function (count) {
                    return 0 < count;
                });
            });
            items.get(0).click();
        });
    }

希望能帮助到你.

使用Angular-UI Select2元素进行Angularjs E2E测试的更多相关文章

  1. 利用Angular+Angular-Ui实现分页(代码加简单)

    这篇文章主要介绍了利用Angular+Angular-Ui实现分页,利用Angular+Angular-Ui实现的分页分页代码更加简单,更加容易懂哦,相信本文的内容对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。

  2. jquery select2的使用心得(推荐)

    下面小编就为大家带来一篇jquery select2的使用心得(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  3. jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)

    select2是一款jQuery插件,是普通form表单select组件的升级版。 接下来通过本文给大家介绍jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页),需要的的朋友参考下吧

  4. Vue.js监听select2的值改变进行查询方式

    这篇文章主要介绍了Vue.js监听select2的值改变进行查询方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  5. Select2在使用ajax获取远程数据时显示默认数据的方法

    今天小编就为大家分享一篇Select2在使用ajax获取远程数据时显示默认数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

  6. php – 以Jquery select2形式发布POST

    所以我使用的是Select2插件,在表单中发布多个选项时遇到问题.我可以选择多个选项,但只能传递一个:在我的PHP页面上,当我选择多个选项后var_dump:我只得到一根绳子,即:我需要转到隐藏的输入格式吗?答案是在name属性之后加入[],这与插件几乎没有关系.

  7. php – 如何通过URL传递变量的多个值

    我正在构建一个应用程序,而且我遇到了某个问题.我正在尝试传递一个具有多个值的变量.所以我的网址将如下所示:问题是我不知道如何做到这一点.变量用于从数据库中检索数据.我正在使用PHP而没有Javascript.任何帮助都会很棒!

  8. 动态添加项目到使用AJAX的jQuery Select2控件

    我有一个jQuerySelect2控件使用AJAX来填充:AJAX链接到可能选项的数据库,并且您可以看到需要两个字符的输入。相同的确切代码适用于非AJAXSelect2框。我尝试了各种替代方法,如使用$。remove()只会删除原来的字段,但使Select2控件保持不变。任何想法如何a)动态添加一个选项到使用AJAX的Select2控件;或b)完全删除一个Select2控件,以便它可以以编程方式添加回来?编辑我发现另一个问题,显示如何删除select2元素,使用.select2。我更喜欢能够添加选项比销毁

  9. select2 ajax 设置默认值,初始值

    在做功能的时候需要修改数据,修改数据时需要显示原始值.但是在select2的时候显示原始值是一个非常非常非常非常非常要命的难题.研究了3个小时,最后使用$.ajax重新加载原始值.并显示.重点是下面的代码,再次加载默认值.赋值.主要是在select控件添加上option.具体是ajax加载的还是直接后台用代码生成的.都可以..最后用$select2.trigger;渲染到界面上..就可以了.

  10. php – 无法从select2搜索结果中选择一个结果

    我正在使用我的搜索框中的select2.我从我的网址获取结果,但我无法从中选择一个选项.我想使用’product.productName’作为选择后显示的文本.有没有我错过的东西,或者我所犯的任何错误.我已经包括select2.css和select2.min.js,jquery.js这是我的resut_object您缺少结果数据的id属性.Select2pluginswantsanidfieldo

随机推荐

  1. Angular2 innerHtml删除样式

    我正在使用innerHtml并在我的cms中设置html,响应似乎没问题,如果我这样打印:{{poi.content}}它给了我正确的内容:``但是当我使用[innerHtml]=“poi.content”时,它会给我这个html:当我使用[innerHtml]时,有谁知道为什么它会剥离我的样式Angular2清理动态添加的HTML,样式,……

  2. 为Angular根组件/模块指定@Input()参数

    我有3个根组件,由根AppModule引导.你如何为其中一个组件指定@input()参数?也不由AppModalComponent获取:它是未定义的.据我所知,你不能将@input()传递给bootstraped组件.但您可以使用其他方法来做到这一点–将值作为属性传递.index.html:app.component.ts:

  3. angular-ui-bootstrap – 如何为angular ui-bootstrap tabs指令指定href参数

    我正在使用角度ui-bootstrap库,但我不知道如何为每个选项卡指定自定义href.在角度ui-bootstrap文档中,指定了一个可选参数select(),但我不知道如何使用它来自定义每个选项卡的链接另一种重新定义问题的方法是如何使用带有角度ui-bootstrap选项卡的路由我希望现在还不算太晚,但我今天遇到了同样的问题.你可以通过以下方式实现:1)在控制器中定义选项卡href:2)声明一个函数来改变控制器中的散列:3)使用以下标记:我不确定这是否是最好的方法,我很乐意听取别人的意见.

  4. 离子框架 – 标签内部的ng-click不起作用

    >为什么标签标签内的按钮不起作用?>但是标签外的按钮(登陆)工作正常,为什么?>请帮我解决这个问题.我需要在点击时做出回复按钮workingdemo解决方案就是不要为物品使用标签.而只是使用divHTML

  5. Angular 2:将值传递给路由数据解析

    我正在尝试编写一个DataResolver服务,允许Angular2路由器在初始化组件之前预加载数据.解析器需要调用不同的API端点来获取适合于正在加载的路由的数据.我正在构建一个通用解析器,而不是为我的许多组件中的每个组件设置一个解析器.因此,我想在路由定义中传递指向正确端点的自定义输入.例如,考虑以下路线:app.routes.ts在第一个实例中,解析器需要调用/path/to/resourc

  6. angularjs – 解释ngModel管道,解析器,格式化程序,viewChangeListeners和$watchers的顺序

    换句话说:如果在模型更新之前触发了“ng-change”,我可以理解,但是我很难理解在更新模型之后以及在完成填充更改之前触发函数绑定属性.如果您读到这里:祝贺并感谢您的耐心等待!

  7. 角度5模板形式检测形式有效性状态的变化

    为了拥有一个可以监听其包含的表单的有效性状态的变化的组件并执行某些组件的方法,是reactiveforms的方法吗?

  8. Angular 2 CSV文件下载

    我在springboot应用程序中有我的后端,从那里我返回一个.csv文件WheniamhittingtheURLinbrowsercsvfileisgettingdownloaded.现在我试图从我的角度2应用程序中点击此URL,代码是这样的:零件:服务:我正在下载文件,但它像ActuallyitshouldbeBook.csv请指导我缺少的东西.有一种解决方法,但您需要创建一个页面上的元

  9. angularjs – Angular UI-Grid:过滤后如何获取总项数

    提前致谢:)你应该避免使用jQuery并与API进行交互.首先需要在网格创建事件中保存对API的引用.您应该已经知道总行数.您可以使用以下命令获取可见/已过滤行数:要么您可以使用以下命令获取所选行的数量:

  10. angularjs – 迁移gulp进程以包含typescript

    或者我应该使用tsc作为我的主要构建工具,让它解决依赖关系,创建映射文件并制作捆绑包?

返回
顶部