使用 WebBrowser 自动填写 AngularJS 表单
Using WebBrowser to automate filling in an AngularJS form
我正在使用 WebBrowser 在使用 AngularJS 的网站上自动填写文本框。
这是他们网站上的HTML
<input name="email" type="email" placeholder="Email address" ng-model="login.email" autofocus="" class="ng-pristine ng-valid ng-empty ng-valid-email ng-touched" aria-invalid="false">
这是我的 C# 代码
webBrowser1.Document.GetElementsByTagName("input").GetElementsByName("email")[0].SetAttribute("value", _login);
填充输入框,但我认为它不会更新 Angular 模型。
因此您无法提交表单,因为该网站 (即.Angular)认为还是空的.
如何从我的 WebBrowser 控件触发 ng-model 更新?
这是更新 ng-model 所需的脚本
angular.element($("input[name='email']")).triggerHandler('change')
您可以像这样从 WebBrowser 执行它
wb.Document.InvokeScript("eval", new[] { "angular.element($('input[name=email]')).val('your@email').triggerHandler('change')" });
我正在使用 WebBrowser 在使用 AngularJS 的网站上自动填写文本框。
这是他们网站上的HTML
<input name="email" type="email" placeholder="Email address" ng-model="login.email" autofocus="" class="ng-pristine ng-valid ng-empty ng-valid-email ng-touched" aria-invalid="false">
这是我的 C# 代码
webBrowser1.Document.GetElementsByTagName("input").GetElementsByName("email")[0].SetAttribute("value", _login);
填充输入框,但我认为它不会更新 Angular 模型。
因此您无法提交表单,因为该网站 (即.Angular)认为还是空的.
如何从我的 WebBrowser 控件触发 ng-model 更新?
这是更新 ng-model 所需的脚本
angular.element($("input[name='email']")).triggerHandler('change')
您可以像这样从 WebBrowser 执行它
wb.Document.InvokeScript("eval", new[] { "angular.element($('input[name=email]')).val('your@email').triggerHandler('change')" });