Я абсолютно не знаком с 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. Надеюсь, что некоторый опытный пользователь здесь прольет свет.
Спасибо!
У меня была эта точная проблема при очистке сайта. Для меня это изменилось, изменив viewport casper.create() на
viewportSize: { width: 1920, height: 1080 }
и использование casper.viewport(1920, 1080)
функционирует на следующем шаге.
Страница, которую я пыталась очистить, была одностраничным приложением, которое потребовало от меня использовать CasperJS, чтобы щелкнуть ссылку, чтобы просмотреть следующую страницу. Я думаю, по какой-то причине следующая страница не загружалась из-за небольшого размера видового экрана по умолчанию 400x300. Возможно, более эффективный способ сделать это, но это сработало для меня.