2013-11-12 3 views
5

Я пытаюсь использовать CasperJS для автоматизации много утомительного ввода данных. В частности, зарегистрировать очень большую партию оборудования камеры на веб-сайте canon.CasperJS не следует перенаправлять на HTTPS

У меня есть код для заполнения формы, и у меня нет проблем с навигацией по веб-страницам с использованием CasperJS, но я не могу заставить CasperJS перейти на страницу входа.

Вот что я до сих пор:

var casper = require('casper').create({ 
    verbose: true, 
    userAgent: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36', 
    logLevel: "debug" 
}); 

phantom.cookiesEnabled = true; 

casper.start(); 

casper.thenOpen('https://b2cweb.usa.canon.com/b2cweb/view/myAccountHome.jsf?LOGINACTION=Y', function(response) { 
require('utils').dump(response); 
}); 

casper.run(); 

Примечание: Этот код сбрасывает содержимое заголовка, когда он достигает страницы. Я также пробовал разные строки пользовательских агентов, если Adobe активно блокирует сканеры.

Ссылка работает безупречно в Google Chrome, но CasperJS просто регистрирует следующее.

Загрузка ресурсов не удалось со статусом = сбой

От Google Dev Tools оказывается, что ссылка 302 перенаправляет на

https://b2cweb.usa.canon.com/b2cweb/view/myAccountHome.jsf?LOGINACTION=Y

Тогда 301 перенаправляет:

https://b2cweb.usa.canon.com/b2cweb/view/login.jsf?TYPE=33554432&REALMOID=06-979697ef-63e3-49da-a97f-795f9d794fcc&GUID=&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=-SM-EA3lbvOPfpMVWEZ5fDNhRBdvP75YFZ%2fmmFcIOEdxcmO9f3eSAXAISOKvl7eaVyQm&TARGET=-SM-HTTP%3a%2f%2fb2cweb%2eusa%2ecanon%2ecom%2fb2cweb%2fview%2fmyAccountHome%2ejsf%3fLOGINACTION%3dY

Я предполагаю, что перенаправляет являются причиной, почему за CasperJS не может принести страницу входа в систему.

Возможно ли, что CasperJS будет следовать этим типам переадресаций? Может ли CasperJS использоваться для просмотра и/или входа через HTTPS?

Update:

Я не уверен, если это редирект, что вызывает проблему.

В качестве обходного пути я попытался предварительно предварительно загрузить файл cookie сеанса (скопированный из хрома) в casperjs, затем перейдя непосредственно на страницу учетной записи.

Я также попытался добавить флаг -ignore-ssl-errors = true в команду без успеха.

Независимо от того, что я делаю, это возвращает примерно: пустой URL-адрес.

+0

PhantomJS имеет проблемы после перенаправления, вы можете автоматизировать его с [slimerjs] (http://slimerjs.org/) от casperjs : 'casperjs --engine = slimerjs'. –

ответ

-1

Ниже приведет вас к знаку в странице:

var casper = require("casper").create ({ 
    waitTimeout: 15000, 
    stepTimeout: 15000, 
    verbose: true, 
    viewportSize: { 
     width: 1400, 
     height: 768 
    }, 
    onWaitTimeout: function() { 
     logConsole('Wait TimeOut Occured'); 
     this.capture('xWait_timeout.png'); 
     this.exit(); 
    }, 
    onStepTimeout: function() { 
     logConsole('Step TimeOut Occured'); 
     this.capture('xStepTimeout.png'); 
     this.exit(); 
    } 
}); 

casper.on('remote.message', function(msg) { 
    logConsole('***remote message caught***: ' + msg); 
}); 

casper.userAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4'); 

// vars 
var gUrl   = 'http://www.usa.canon.com/cusa/home'; 

// Open URL and click sign in 
casper.start(gUrl, function() { 
    this.clickLabel('Sign In', 'a'); 
}); 

//Sign in page 
casper.then(function() { 
    //+++ ready for you to fill user information. 
    this.capture('xSignIn.png'); //+++ shows you are on signin page. can remove. 
}); 

casper.run(); 
Смежные вопросы