2014-11-04 4 views
1

Я пытаюсь вытащить текст тега заголовка из двух веб-страниц на сайте Drupal. Я хочу использовать Nightmarejs.Nightmarejs несколько страниц в одном тесте

Вот мой код до сих пор:

// get the <title> text from inside the Drupal site 
var Nightmare = require('nightmare'); 
var user = '[email protected]'; 
var pass = 'foobar'; 

new Nightmare() 
    .goto('http://example.com/user') 
    .type('#edit-name', user) 
    .type('#edit-pass', pass) 
    .click('.searchsubmit') 
    .wait() 
    .evaluate(function() { 
     return document.getElementsByTagName("TITLE")[0]; 
     }, function (res) { 
     console.log('Homepage title: '+res.text); 
    }) 
    .run(function(err, nightmare){ 
     console.log('Done1.'); 

     // step 2 
     nightmare 
     .goto('http://example.com/admin') 
     .wait() 
     .evaluate(function() { 
      return document.getElementsByTagName("TITLE")[0]; 
      }, function (res) { 
     console.log('Admin page title: '+res.text); 
     }) 
     .run(function(err, nightmare){ 
      console.log('Done2.'); 
     }) 
     ; 
    }) 
; 

Когда я запускаю это, с: узел app.js Я могу войти в систему, успешно на первой странице. К сожалению, когда я пытаюсь открыть вторую страницу, я вижу, что на втором вызове страницы отказался (http://example.com/admin). Сеанс не переносится во вторую команду «goto».

Что я могу сделать, чтобы открыть много страниц с той же сессией nightmarejs?

ответ

1

После некоторых испытаний я обнаружил, что кажется, что goto() следует использовать только один раз. Чтобы перейти на новую страницу, я использую click() вместо дополнительного goto().

2

Вы пробовали цепочки методов goto?

new Nightmare() 
    .goto('http://example.com/user') 
    .type('#edit-name', user) 
    .type('#edit-pass', pass) 
    .click('.searchsubmit') 
    .wait() 
    .evaluate(function() { 
     return document.getElementsByTagName("TITLE")[0]; 
     }, function (res) { 
     console.log('Homepage title: '+res.text); 
    }) 
    .goto('http://example.com/admin') 
     .wait() 
     .evaluate(function() { 
      return document.getElementsByTagName("TITLE")[0]; 
      }, function (res) { 
     console.log('Admin page title: '+res.text); 
     }) 
     .run(function(err, nightmare){ 
      console.log('Done2.'); 
     }) 
     ; 
    }).run(); 

От чтения api docs запустить только выполняет команды, которые были до него.

+0

работает как очарование – Sunjalo

 Смежные вопросы

  • Нет связанных вопросов^_^