2015-11-13 2 views
1

Я использую casperJS для получения ссылок при нажатии кнопки. Ссылки возвращаются с помощью window.open в javaScript.Как получить URL-адрес новой страницы с помощью casperJS

Код, который я написал, записывает все страницы после нажатия кнопки, но фантом не выходит из окна терминала. Также некоторые страницы показывают только: пустые, особенно последние.

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(); 
    }); 

} 
+0

Возможно, что: пустое причинение фантома не выйти. – user1846022

+1

Если вы правильно поняли, вы нажимаете кнопку ('$ (". Button "). Click();'), которая открывает новое всплывающее окно ('newPage'), которое должно содержать список (в' newPage 'content) URL-адресов, и вы пытаетесь их зарегистрировать. Я не вижу, где вы пытаетесь восстановить его в своем скрипте. Мне также кажется, что 'newPage' на самом деле' closePage'. Что URL-адрес всплывающего окна имеет отношение к списку URL-адресов в содержимом всплывающего окна. Пожалуйста, отредактируйте свой вопрос, чтобы сделать его более понятным. Кроме того, почему вы пишете код PhantomJS, если можете использовать код CasperJS? –

ответ

2

Метод "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(); 
     }); 

});