在 CasperJS 中等待网页警报
Wait for a web page alert in CasperJS
我是 CasperJS 的新手,几个小时后我可以登录并使用它浏览几个网页,但我被这个网站上的警告消息难住了:https://www.macysliquidation.com/
我需要解除警报才能登录。
我的简单(非工作)代码是:
var casper = require('casper').create();
casper.userAgent('Mozilla/12.0 (compatible; MSIE 6.0; Windows NT 5.1)');
casper.on('remote.alert', function(message) {
this.echo('alert message: ' + message);
// how do i get rid of the popup??
this.thenClick();
});
casper.start('https://www.macysliquidation.com/');
casper.then(function() {
// login here
this.sendKeys('#txtUsername','username');
this.sendKeys('#txtPassword','password');
this.thenClick('#btnLogin');
});
casper.run(function() {
// see what went on
this.capture('page.png');
this.echo('done').exit();
});
在点击警报之前,登录控件尚未 visible/available。所以上面的jsreturns
Cannot get informations from #txtUsername: element not found
正如您已经注意到的功能 capser.waitForAlert()
is available since version 1.1-beta4. You can copy the function from the code 如果您没有时间升级:
casper.waitForAlert = function(then, onTimeout, timeout) {
...
};
问题:
警报和确认只是发生,它们不会停止 PhantomJS 和 CasperJS 中的执行。它们也不是页面的一部分,无法点击。
如果您在 CasperJS 中注册错误事件(resource.error
and page.error
and remote.message
总是一个好主意),您会看到抛出了一个特定的资源错误:
{"errorCode":6,"errorString":"SSL handshake failed","id":1,"url":"https://www.macysliquidation.com/"}
如果您检查了页面的 status,您会发现它没有加载。
解决方案:
运行 CasperJS --ignore-ssl-errors=true
并根据您的 PhantomJS 版本 --ssl-protocol=tlsv1
。更多信息 here.
我是 CasperJS 的新手,几个小时后我可以登录并使用它浏览几个网页,但我被这个网站上的警告消息难住了:https://www.macysliquidation.com/
我需要解除警报才能登录。
我的简单(非工作)代码是:
var casper = require('casper').create();
casper.userAgent('Mozilla/12.0 (compatible; MSIE 6.0; Windows NT 5.1)');
casper.on('remote.alert', function(message) {
this.echo('alert message: ' + message);
// how do i get rid of the popup??
this.thenClick();
});
casper.start('https://www.macysliquidation.com/');
casper.then(function() {
// login here
this.sendKeys('#txtUsername','username');
this.sendKeys('#txtPassword','password');
this.thenClick('#btnLogin');
});
casper.run(function() {
// see what went on
this.capture('page.png');
this.echo('done').exit();
});
在点击警报之前,登录控件尚未 visible/available。所以上面的jsreturns
Cannot get informations from #txtUsername: element not found
正如您已经注意到的功能 capser.waitForAlert()
is available since version 1.1-beta4. You can copy the function from the code 如果您没有时间升级:
casper.waitForAlert = function(then, onTimeout, timeout) {
...
};
问题:
警报和确认只是发生,它们不会停止 PhantomJS 和 CasperJS 中的执行。它们也不是页面的一部分,无法点击。
如果您在 CasperJS 中注册错误事件(resource.error
and page.error
and remote.message
总是一个好主意),您会看到抛出了一个特定的资源错误:
{"errorCode":6,"errorString":"SSL handshake failed","id":1,"url":"https://www.macysliquidation.com/"}
如果您检查了页面的 status,您会发现它没有加载。
解决方案:
运行 CasperJS --ignore-ssl-errors=true
并根据您的 PhantomJS 版本 --ssl-protocol=tlsv1
。更多信息 here.