javascript - 如何在控制台中使用 JS 在 Angular 中手动选择选项?
问题描述
作为浏览器自动化的一部分,我需要从浏览器控制台(没有自动化工具)连接到 Angular 应用程序,并从两个下拉列表中手动选择所需的“状态”和“城市”。我之前已经dirty
通过 JavaScript 代码成功输入表单(例如用户名字段),但我无法自动进行下拉选择。
我试图将$viewValue
,和设置为对象$modelValue
,然后触发使用 and 。但我无法成功更新对. 执行该函数后,状态和城市值将从视图中清除。我无权访问 Angular 源代码,并且该网页受 IP 限制,遗憾的是不公开。但我已经在这里上传了JSON 文件以及 HTML 元素代码和我的 JavaScript 代码在片段中。里面有两个控件$$rawModelValue
$$lastCommittedViewValue
states
$digest
$scope.$apply()
controller("ngModel").$render()
$scope
$apply()
$scope
$scopeState.state.$$controls
我认为与下拉列表有关。我阅读了 Angular 架构以及模板和指令以及 ngModel 的工作原理,但仍然无法弄清楚在这种情况下如何手动选择选项。当我们单击下拉列表时,您能否详细解释一下发生了什么?哪个函数或指令负责以及如何在控制台中使用 JavaScript 执行此操作?
var myState = document.evaluate("//*[@id='state']", document).iterateNext();
var elNameState = angular.element(myState);
var $scopeState = elNameState.scope();
$scopeState.state.$$controls[state].$viewValue='{id: 20}';
var myCity = document.evaluate("//*[@id='city']", document).iterateNext();
var elNameCity = angular.element(myCity);
var $scopeCity = elNameCity.scope();
$scopeState.state.$$controls[city].$viewValue='{id: 5}';
更新:现在通过更改 id 并触发摘要来更新范围。
解决方案
推荐阅读
- java - 单击提交按钮后,Servlet 不会重定向
- python-2.7 - 类型错误:“函数”对象不能使用张量流进行下标
- c++ - 使用 Cmake 来做 ./genMakefiles && make -j4
- javascript - CSS 帮助选择某个类的最后一个元素
- reactjs - webpack --optimize-minimize vs -p
- ios - 如何在 Swift4 中获取另一个类的枚举内容?
- terminology - 指定既操作对象又返回值的函数,与前者或后者的函数相反?
- javascript - 如何使用 Axios 一次执行一项删除请求?
- angularjs - Angular Scope 变量将结果从 $http 附加到数据变量而不是覆盖它
- java - Spring Boot 中默认不使用自定义密钥生成器