通过 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