【问题标题】:How to get get URL of new page using casperJS如何使用 casperJS 获取新页面的 URL
【发布时间】:2015-11-13 16:02:50
【问题描述】:

我正在使用 casperJS 在单击按钮时获取链接。链接通过 javaScript 中的 window.open 返回。

我编写的代码在单击按钮后记录了所有页面,但幻象没有在终端窗口中退出。还有一些页面只显示:空白,尤其是最后一个。

var casper = require('casper').create();
var page = require('webpage').create();

var address = 'http://www.example.com';

page.open(address, function() {

    page.onPageCreated = function(newPage) {

        newPage.onClosing = function(closingPage) {
            console.log('A child page is closing: ' + closingPage.url);

            /* if i set phantom.exit() it will only log the first page url. 
            Problem: I need all page urls. */
        }

    }

    page.evaluate(function() {
        $(".button").click();
    });

}

【问题讨论】:

  • 也许 about:blank 会导致幻象无法退出。
  • 如果我对您的理解正确,您正在单击一个按钮 ($(".button").click();),它会打开一个新的弹出窗口/窗口 (newPage),其中应该包含一个列表(在 newPage 内容中) URL 并且您正在尝试记录它们。我没有看到您试图在脚本中检索它的位置。在我看来,newPage 实际上也是closingPage。弹窗的 URL 与弹窗内容中的 URL 列表有什么关系。请edit您的问题更清楚。另外,如果可以使用 CasperJS 代码,为什么还要编写 PhantomJS 代码?

标签: javascript web-scraping phantomjs casperjs window.open


【解决方案1】:

方法“getCurrentUrl()”将返回当前的url。这是一个简单(没有真正意义)的示例:

casper.test.begin('My Test', 1 , function suite(test) {

        casper.start().viewport(1600,1000).thenOpen("https://blabla.de", function() {
                var mylink = this.getElementInfo("#linkid").text;
                this.clickLabel(mylink);
        });

        casper.waitForSelector("#page2", function() {
                this.echo(this.getCurrentUrl());
        });

        casper.run(function() {
                test.done();
        });

});

【讨论】:

    【解决方案2】:

    您可以使用以下方法之一在 CasperJS 中获取当前页面的 URL:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-27
      • 1970-01-01
      • 2015-12-10
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      • 2012-08-07
      • 1970-01-01
      相关资源
      最近更新 更多