javascript - 当 Selenium 中自动下拉菜单时,无法触发 Angular ng-change 功能

标签 javascript html angularjs selenium dom-events

<select class="form-control ng-pristine" ng-model="conf.pinnedOriginalTransaction.net" name="categoryId" style="width:90%;" ng-options="key as value for (key, value) in categoryIdList" ng-change="validateForAction()" required="">..

我遇到过一种情况,在我的表单中,当仅从下拉列表中选择某个值时,我需要单击的按钮就会被启用。 手动完成时效果很好,但是当自动选择 Web 元素时,尽管选择了所需值,但启用按钮的 Angular JS 函数不会被触发。

根据我对此的研究,我设法编写代码来手动触发函数 JS ScriptExecutor,但仍然遇到空指针异常。下面给出了自动代码。

Select dropdown = new Select(webelement);
                log.info(webelement);
                dropdown.selectByVisibleText(sValue);
                js.executeScript("arguments[0].validateForAction(true);",webelement);

最佳答案

首先,您需要确保所有 pendingRequests 均已完成。

你可以使用这个 JS 来实现:

var injector = window.angular.element('body').injector();
var $http = injector.get('$http');
return ($http.pendingRequests.length === 0);

希望这对您有帮助!

关于javascript - 当 Selenium 中自动下拉菜单时,无法触发 Angular ng-change 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56690012/

相关文章:

html - 具体的高度和宽度,还要用padding/margin?

javascript - 如何动态设置 Angularjs select 的值?

javascript - AngularJS ng-repeat orderBy 订单编号不正确

javascript - 在 Angular/Django 项目中安装 Karma 的首选方式是什么?

javascript - 二维数组水平平均输出

html - CSS:在放大字体大小时保持div大小相同

带有复合键的 Javascript 映射

html - 设置全局CSS属性时html、body和*有什么区别

javascript - 我如何在 append 数组中使用 FOR?

javascript - 使用 Ember.js 在模板中显示模型 JSON 数据