CasperJS Click не работает на якорь без ссылки

0

Я абсолютно не знаком с CasperJS. Я пытаюсь имитировать "щелчок" на якоре на странице, которая не имеет атрибута href. На странице используется jquery для привязки функции javascript для вызова при щелчке по этому элементу. Он работает, если я запускаю его вручную через браузер, но, пытаясь имитировать это, используя click() или thenClick() не работает. Здесь упрощенная страница, чтобы продемонстрировать проблему, с которой я столкнулся:

one.html

<!DOCTYPE html>
<html>
<head>
  <title>One.html Page</title>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">

</head>
<body>
  <div class="container">    
    <div>
      <h3>Test</h3>
    </div>

    <div>
        <a id="enterButton" name="enterButton" class="btn btn-primary btn-lg" role="button">Enter</a>
    </div>

  </div>

  <script src="http://code.jquery.com/jquery-1.7.0.min.js"></script>

  <script>

  $("#enterButton").click(validateOne);
  function validateOne() {
    window.location.href = "pageTwo.html";
  }

  </script>
</body>
</html>

мой тестовый скрипт casper.js:

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

casper.start('urlTo/one.html', function() {
  this.echo(this.getTitle());
});

casper.then(function() {
  this.click('#enterButton');
});

casper.wait(200, function() {
  this.capture('pageTwo.png');
});

casper.run();

Когда я запускаю свой скрипт casper.js, на экране, который я захватил, по-прежнему остается исходная страница (one.html), а не на pageTwo.html. Я пробовал несколько вещей, но, похоже, проблема заключается в том, что событие "click" не запускается. Я подтвердил, что если я добавлю href в тег anchor в html для вызова функции javascript, все будет работать нормально. Но я не могу изменить реализацию html, чтобы мой тестовый скрипт работал. Я думаю, что должен быть способ получить эту работу в casperJS. Надеюсь, что некоторый опытный пользователь здесь прольет свет.

Спасибо!

  • 0
    Я нашел причину проблемы. Проблема в том, что библиотека jquery не включается. Таким образом, логика с использованием jquery не работает. Когда я использую jquery.min.js, который находится на моем сервере, он работает нормально. Итак, проблема, с которой я столкнулся, заключается в том, что событие щелчка jquery не привязывалось к привязке. Таким образом, ничего не происходит, когда casperJS нажимает на этот якорь.
  • 0
    Теперь, что если я не могу изменить код для использования локальной версии библиотеки jquery ... каким должен быть мой сценарий casperjs для правильной загрузки библиотеки jquery в DOM, чтобы вышеуказанный HTML работал как есть?
Показать ещё 2 комментария
Теги:
phantomjs
casperjs

1 ответ

0

У меня была эта точная проблема при очистке сайта. Для меня это изменилось, изменив viewport casper.create() на

viewportSize: { width: 1920, height: 1080 }

и использование casper.viewport(1920, 1080) функционирует на следующем шаге.

Страница, которую я пыталась очистить, была одностраничным приложением, которое потребовало от меня использовать CasperJS, чтобы щелкнуть ссылку, чтобы просмотреть следующую страницу. Я думаю, по какой-то причине следующая страница не загружалась из-за небольшого размера видового экрана по умолчанию 400x300. Возможно, более эффективный способ сделать это, но это сработало для меня.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню