Щелчок CasperJS не работает должным образом с несколькими кнопками отправки

#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 Отправка работает, но значение кнопки отправки не отправляется обратно на сервер, поэтому мой серверный код не знает, какая кнопка нажата.