如何通过单击来自javascript外部的复选框来更新AngularJS模型

How to get AngularJS model updated by clicking checkbox from outside javascript?

本文关键字:更新 复选框 AngularJS 模型 javascript 何通过 单击 外部      更新时间:2023-09-26
  • 我有 AngularJS 应用程序需要测试
  • 我无法修改它。
  • 我用Selenide/Java编写我的测试,使用JavascriptExecutor进行JS执行
  • 我需要在我的测试中单击javascript中的复选框(这是必要的)

复选框:

<input class="ng-pristine ng-valid" type="checkbox" ng-model="row.selected">

问题:

如何触发更新 Angular 模型中变量row.selected事件?

注意:AngularJS应用程序在用人手点击鼠标时可以完美运行。它可能没有错。

我尝试过的:

jsExecutor.executeScript(""
    + "angular.element(arguments[0]).trigger('click'); "
    + "return 'doesnt matter what';",proxy);
  • proxy WebElement
  • 此方法在单击其他测试用例中的链接时有效

结果:该复选框在 javascript 运行后已被取消/选中,但模型的 row.selected 变量尚未取消/选中。

触发两次点击可以解决自动测试的问题。

这意味着复选框在视觉上最终处于初始状态,因为它被单击了两次(选中和取消选中或取消选中并选中)。

模型将更新,就好像复选框只被单击过一次一样。

AngularJS中可能存在与 https://github.com/angular/angular.js/issues/3470 有关的问题