通过 CasperJS 或 PhantomJS 抓取 Popup 页面内容
Capture Popup page content through CasperJS or PhantomJS
A.html
<input type="submit" name="testLabel" value="Print Test" id="testLabel" onclick="myFunction('<?php echo $dynamic_page;?>')" >
<script>
function myFunction(page) {
var strWindowFeatures = "location=yes,height=570,width=520,scrollbars=yes,status=yes";
window.open(page, "_blank",strWindowFeatures);
}
</script>
CasperJS 代码
var casper = require('casper').create();
casper.start('http://localhost/test/a.html', function() {
this.echo(this.getTitle());
});
casper.thenClick('#testLabel');
casper.then(function() {
this.capture('page.png');
});
casper.run();
我也尝试过使用 phantomjs,但我无法在 page.png
中捕获 b.html 页面
注意:弹出页面名称不固定。
有 waitForPopup and withPopup 个方法,因此您的代码如下所示
var casper = require('casper').create();
casper.start('http://localhost/test/a.html', function() {
this.echo(this.getTitle());
});
casper.thenClick('#testLabel');
casper.waitForPopup(/.\.html$/, function() {
this.echo('Popup')
});
casper.withPopup(0, function() {
this.capture('page.png');
});
casper.run();
// 这会将弹出窗口 DOM 设置为仅在
时间段内的主要活动窗口
// 正在执行步骤闭包
casper.withPopup(0, function() {
this.test.assertTitle('Popup title');
});
完整代码
var casper = require('casper').create();
casper.start('http://localhost/test/a.html', function () {
this.echo(this.getTitle());
});
casper.thenClick('#testLabel');
casper.waitForPopup(0, function () {
this.echo('Popup');
});
casper.then(function () {
this.capture('page.png');
});
casper.run();
阅读更多关于 waitForPopup
A.html
<input type="submit" name="testLabel" value="Print Test" id="testLabel" onclick="myFunction('<?php echo $dynamic_page;?>')" >
<script>
function myFunction(page) {
var strWindowFeatures = "location=yes,height=570,width=520,scrollbars=yes,status=yes";
window.open(page, "_blank",strWindowFeatures);
}
</script>
CasperJS 代码
var casper = require('casper').create();
casper.start('http://localhost/test/a.html', function() {
this.echo(this.getTitle());
});
casper.thenClick('#testLabel');
casper.then(function() {
this.capture('page.png');
});
casper.run();
我也尝试过使用 phantomjs,但我无法在 page.png
中捕获 b.html 页面注意:弹出页面名称不固定。
有 waitForPopup and withPopup 个方法,因此您的代码如下所示
var casper = require('casper').create();
casper.start('http://localhost/test/a.html', function() {
this.echo(this.getTitle());
});
casper.thenClick('#testLabel');
casper.waitForPopup(/.\.html$/, function() {
this.echo('Popup')
});
casper.withPopup(0, function() {
this.capture('page.png');
});
casper.run();
// 这会将弹出窗口 DOM 设置为仅在
时间段内的主要活动窗口// 正在执行步骤闭包
casper.withPopup(0, function() {
this.test.assertTitle('Popup title');
});
完整代码
var casper = require('casper').create();
casper.start('http://localhost/test/a.html', function () {
this.echo(this.getTitle());
});
casper.thenClick('#testLabel');
casper.waitForPopup(0, function () {
this.echo('Popup');
});
casper.then(function () {
this.capture('page.png');
});
casper.run();
阅读更多关于 waitForPopup