如何使用JavaScript通过网络抓取复杂的登录页面?

时间:2019-01-29 02:14:41

标签: javascript html angularjs web-scraping

我正在尝试使用javascript登录到网页,但是,即使输入的文字清楚,页面也会显示错误消息“用户名/密码字段为空”。这是我使用javascript输入用户名/密码的方法。

document.getElementById('username').value='TestUsername';
document.getElementById('password').value='TestPassword';

我认为该页面正在使用angularJS阻止javascript输入被识别。如果我在浏览器退格中手动输入一个字符,则会识别该文本。 Chrome / Safari / Opera自动填充功能可以解决此问题,但是移动Safari偶尔会出现问题。

我该如何使用javascript来使输入的文本被网页识别?

另一个说明,元素的HTML类,例如用户名,密码,  表单,然后提交按钮,所有的类都会在识别文本时从“ ng-touched ng-dirty ng-valid”变为“ ng-touched ng-dirty ng-valid”。我尝试使用javascript更改className,但是仍然无法识别文本。

1 个答案:

答案 0 :(得分:1)

设置输入值后,尝试fire the "input" event,如下所示:

var element = document.getElementById('username');
element.value='TestUsername';
var event = new Event('input', {
    'bubbles': true,
    'cancelable': true
});

element.dispatchEvent(event);

Event input is the way from where Angular knows that some changes occurs and it must run digest loop