нажатие кнопки casperjs не переходит на следующую страницу

У меня есть страница, содержащая форму HTML с настройкой javascript, например, если вы нажмете кнопку с некоторым идентификатором, форма будет отправлена. Я проверил это, запустив это в консоли браузера:

document.getElementById("arcotsubmit").click()

Как только он будет запущен, URL-адрес изменится, и форма будет отправлена.

Теперь я попытался воспроизвести это с помощью casper.js:

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


casper.start('https://cib.icicibank.com/corp/BANKAWAY?Action.CorpUser.Init1.001=Y&AppSignonBankId=ICI&AppType=corporate', function() {
    this.echo(this.getTitle());
});

casper.then(function(){

    this.click("#arcotsubmit");

});

casper.then(function(){

    console.log(this.getCurrentUrl())
});

casper.run();

Он остается на том же URL-адресе и загружает ту же страницу. Я хочу загрузить HTML-код, который появляется после нажатия кнопки Каспером. URL-адрес активен и может быть протестирован напрямую.

Я хочу сказать, могу ли я использовать эту команду в консоли браузера

document.getElementById("arcotsubmit").click()

и сделать его перенаправленным, почему я не могу сделать это с помощью this.click("#arcotsubmit") в casperjs?


person beNerd    schedule 26.01.2014    source источник
comment
Вы когда-нибудь находили решение, потому что у меня такая же проблема? И я использую прямой PhantomJS.   -  person alphadogg    schedule 22.12.2014


Ответы (2)


Это отправить вместо щелкнуть для перенаправления. Событием по умолчанию для input[type=image] является отправить, так что попробуйте следующее:

casper.test.begin('Test page.', 2, function suite(test) {
    casper.start(
        'https://cib.icicibank.com/corp/BANKAWAY?Action.CorpUser.Init1.001=Y&AppSignonBankId=ICI&AppType=corporate',
        function() {
            this.echo(this.getTitle());
            test.assertUrlMatch(/BANKAWAY?/, 'Current location is ' + this.getCurrentUrl());
        }
    );

    casper.then(function(){
        this.fill('#rt', {}, true);
        this.wait(2000, function() {
            test.assertUrlMatch(/BANKAWAY;/, 'New location is ' + this.getCurrentUrl());
        });
    });

    casper.run(function() {
        test.done();
    });
});

Это будет пройдено. Снимок экрана с результатами теста

person Anson    schedule 16.06.2016

Возможно быстрое исправление. Если щелчок Casper не работает, но ваш код работает в консоли браузера, попробуйте использовать вычислить функцию.

casper.then(function() {
  this.evaluate(function() {
    document.getElementById("arcotsubmit").click();
  });
});
person Christopher Ellis    schedule 26.01.2014