#casperjs
#casperjs
Вопрос:
У меня есть форма с 3 кнопками сохранения с идентификаторами ‘save’, ‘save_new’ и ‘save_copy’. Мой серверный код выполняет различные действия после сохранения в зависимости от наличия одного из этих полей в блоке http-запроса. Когда я использую браузер и нажимаю сохранить, например, параметр сохранения появляется в объекте запроса. Когда я использую щелчок CasperJS, параметр сохранения отсутствует в блоке запроса, поэтому мой код просто выполняет действие по умолчанию, которое не является правильным результатом.
casper.test.begin('Routine sample test', function suite (test) {
casper.start();
casper.setHttpAuth('<login>', '<pw>');
casper.thenOpen('http://localhost/<sitename>/sample/routine/edit/0', function eval() {
test.assertSelectorHasText("h1", "Routine Sample" );
this.fill('form#routine_form', {
<fill parameters>
}, false);
this.click("#save_new");
});
casper.then(function() {
this.echo(this.getCurrentUrl());
test.assertSelectorHasText("h1", "Routine Sample" );
var sample_id = this.fetchText('[name="sample_id"]');
test.assertEval( function(sample_id) { return sample_id > 0 }, "Sample created" );
});
casper.run(function() {test.done();});
});
Окончательный тест завершается неудачно, потому что сервер не вернул страницу, которую я ожидал.
Комментарии:
1. Добро пожаловать в Stack Overflow! Похоже, вы используете функцию, которая не поддерживается PhantomJS. Какую версию PhantomJS вы используете? Пожалуйста, зарегистрируйтесь на
resource.error
,page.error
,remote.message
иcasper.page.onResourceTimeout
события ( пример ). Возможно, есть ошибки.2. интересно, что произойдет, если вы измените
casper.then(function() {
наcasper.waitForText('SOME TEXT ON SECOND PAGE', function() {
3. PhantomJS 2.1.1, CasperJS 1.1.0 Отправка работает, но значение кнопки отправки не отправляется обратно на сервер, поэтому мой серверный код не знает, какая кнопка нажата.