casperjs тестирует внутренний сайт

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

    var casper = require('casper').create({
                 verbose: true,
                 loglevel:"debug"
                 });

    // listening to a custom event
    casper.on('page.loaded', function() {
              this.echo('The page title is ' + this.getTitle());
              this.echo('value is: '+ this.getElementAttribute
                       ('input[id="edit-capture-amount"]', 
                        'value'));
    });

    casper.start('https://preprod.uk.systemtest.com', function() {
                 this.echo(this.getTitle());
                 this.capture('frontpage.png');
                 // emitting a custom event
                 this.emit('age.loaded.loaded');    
    });

    casper.run();

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


person MQ_    schedule 04.03.2013    source источник


Ответы (3)


У меня была точно такая же проблема. В моем браузере я мог разрешить URL-адрес, но capserjs не мог. Все, что я получил, это about::blank для веб-страницы.

Добавление --ignore-ssl-errors=yes сработало как волшебство!

casperjs mytestjs //didn't work

capserjs --ignore-ssl-errors=yes mytestjs //worked perfect!
person CodeWriter    schedule 13.05.2013

Просто чтобы быть уверенным.

Можете ли вы связаться с preprod.uk.systemtest.com с компьютера, на котором работает casper? Например с помощью пинга или wget.

Есть ли прокси между вашим компьютером и сервером preprod? Или ваша система настроена на передачу через прокси-сервер, который не следует использовать для сервера preprod?

Код каспера вроде в норме.

Я знаю, что это должен быть комментарий, но у меня недостаточно репутации, чтобы опубликовать комментарий.

person moins52    schedule 06.03.2013
comment
preprod довольно заблокирован, и единственная машина, имеющая разрешение на доступ к этому серверу, — это рабочая станция, на которой выполняется этот тест. машина находится внутри той же сети и, следовательно, нет никакого прокси. я не уверен, использует ли casper другой IP-адрес для доступа к веб-адресу, потому что, если это так, этот адрес также должен быть включен в белый список на сервере ngnix. - person MQ_; 06.03.2013
comment
Если рабочая станция находится в той же сети, что и сервер preprod, нетрудно догадаться, какой у него IP-адрес. Рассматривайте Casper просто как обычный веб-браузер. Можете ли вы получить доступ к странице с помощью wget ? - person moins52; 06.03.2013
comment
он говорит, что может подключиться из wget, который я вставляю в вывод - person MQ_; 06.03.2013
comment
C:\dev› wget.exe preprod.uk.systemtest.com SYSTEM_WGETRC = c:/progra ~1/wget/etc/wgetrc syswgetrc = C:\Program Files (x86)\GnuWin32/etc/wgetrc --2013-03-06 17:18:58-- preprod.uk.systemtest.com Разрешение preprod.uk.systemtest.com... 100.300.30.210 Подключение к preprod.uk.systemtest.com|100.300. 30.210|:4403... подключено. - person MQ_; 06.03.2013
comment
ОШИБКА: не удается проверить сертификат preprod.uk.systemtest.com, выданный /C=UK/ST=London/L=London/O=system': Self-signed certificate encountered. ERROR: certificate common name ', не соответствует запрошенному имени хоста preprod.uk.systemtest.com'. To connect to preprod.uk.systemtest.com insecurely, use --no-check-certificate'. Не удается установить SSL-соединение. - person MQ_; 06.03.2013
comment
Я рассматривал Casper как простой браузер, но все это похоже на то, что он заходит с другого ip. Я могу ошибаться, но вроде так. Если я запускаю тот же тест на RC, он работает нормально. - person MQ_; 06.03.2013
comment
и чтобы избежать ошибки ssl, я использовал --ignore-ssl-errors=yes - person MQ_; 06.03.2013

Поскольку тесты CasperJs выполняются на локальном хосте, для тестирования пользовательского домена/субдомена/хоста необходимо определить некоторые заголовки.

Я столкнулся с некоторыми проблемами при передаче только заголовка HOST, например, моментальные снимки не были сделаны должным образом.

Я добавил еще 2 заголовка, и теперь мои тесты работают правильно:

    casper.on('started', function () {
        var testHost = 'preprod.uk.systemtest.com';

        this.page.customHeaders = {
            'HOST': testHost,
            'HTTP_HOST': testHost,
            'SERVER_NAME': testHost
        };
    });

    var testing_url: 'http://localhost:8000/app_test.php';
    casper.start(_testing_url, function() {
    this.echo('I am using symfony, so this should have to show the homepage for the domain: preprod.uk.systemtest.com');
    this.echo('An the snapshot is also working');
    this.capture('casper_capture.png');
}
person Samuel Vicent    schedule 11.07.2016