2014-11-09 2 views
0

Я пытаюсь получить доступ к странице с помощью casperjs и сделать снимок экрана, а затем «нажимать дальше» (и снимать снимок экрана с каждой страницы), в то время как селектор «следующий» существует на странице.Щелчок на следующей странице, когда селектор существует на странице AJAX

Мой код работает на сайтах без ajax, но не на другом сайте, который использует ajax. В основном, со страницей, которая включает в себя Ajax, это то, что происходит:

  1. доступа к странице 1 и снятия скриншотов
  2. нажмите кнопку Далее, чтобы перейти к следующей странице
  3. Сейчас мы находимся на странице 2, возьмите другой Скриншот
  4. снова нажмите кнопку Далее, чтобы перейти на страницу 3 ...
  5. мы возвращаемся к странице 1. (мы должны быть на странице 3)

Workin г пример (сайт без AJAX):

function printscreen() { 
    this.capture('Step' + new Date().valueOf() + '.png'); // take screenshot 
    var nextlink = 'input[name="ctl00$cphMain$Btn_GoNext"]'; // selector 
    if (this.visible(nextlink)) { 
     this.thenClick(nextlink); 
     this.wait(5000); 
     this.then(printscreen); 
    } else { 
     this.echo("END") 
    } // click next and run again or end 
} 

var casper = require('casper').create({ logLevel: "debug", verbose: true }); 
casper.start('http://www.vertentehumana.pt/candidatos/ofertas-de-emprego.aspx').then(printscreen); 
casper.run(function() { this.echo('finished'); this.exit(); }); 

Не работает (только возвращает страница 1 и 2, а затем повторить):

function printscreen() { 
    this.capture('Step' + new Date().valueOf() + '.png'); // take screenshot 
    var nextlink = '#ctl00_ctl00_MainContent_MainContent_dvwListItems_PGB a.dxp-button.dxp-bi:nth-of-type(1)'; // selector 
    if (this.visible(nextlink)) { 
     this.thenClick(nextlink); 
     this.wait(5000); 
     this.then(printscreen); 
    } else { 
     this.echo("END") 
    } // click next and run again or end 
} 

var casper = require('casper').create({ logLevel: "debug", verbose: true }); 
casper.start('http://www.slot.pt/JobVacancies').then(printscreen); 
casper.run(function() { this.echo('finished'); this.exit(); }); 

Как я могу решить эту проблему? И как ограничить n (скажем, 10) запросов?

+0

Ссылки обрываются или становятся недоступными другим. Пожалуйста, включите разметку панели пейджера в самом вопросе, чтобы будущие читатели поняли ответы. –

ответ

0

Если вы перейдете на вторую страницу своего браузера и откройте инструменты разработчика (обычно F12), вы можете ввести $$("yourSelector"), чтобы проверить селекторы.

Проблема в том, что ваш nextlink выбирает . Вернуться на страницу 1 кнопка.

Вы можете использовать

b.dxp-summary + a.dxp-button.dxp-bi 

как следующий селектор.

Что касается другого вопроса. Добавьте глобальную переменную счетчика и проверьте ее на том же месте, где вы проверяете видимость. Однако слово cauton, тест на видимость ничего не делает. Кнопка видна все время и даже на последней странице. Вам нужно будет проверить, нет ли кнопки в классе dxp-disabledButton.

+0

Я тестировал свой селектор с помощью firebug, но только на первой странице ... Действительно, когда я перехожу на вторую страницу, мой селектор ошибается. – peixotorms

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