2017-01-27 4 views
3

() 예를 들어casperjs에서 세션을 유지하는 방법은 무엇입니까? casper.thenOpen를 사용할 때 세션을 유지 어떻게 CasperJS에서

:

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

casper.start('http://chaseonline.com/', function() { 
    this.echo(this.getTitle()); 
    this.evaluate(function() { 
     document.getElementById("userid").value = "[email protected]"; 
     document.getElementById("password").value = "asdf"; 

    }); 
    this.click("#btnSubmit"); 
}); 

casper.thenOpen('http://chaseonline.com/section/1/module/2/abc.jsp', function() { 
    // now this page never loads because the page requires a logged in session 
    // but casperjs doesn't appear to automatically propagate the session 
    this.echo(this.getTitle()); 
}); 

casper.run(); 

답변

1

세션이 여전히 예에 열려 있습니다. 아마도 당신은 올바로 로그인하지 않았을 것입니다. 이 (더 로그인이없는, 내가 볼 수있는 사이트가 귀하의 예제에서 하나가 아닌 것 같다)을 단계별로 작동하는 경우
될 수 있을까 :

var casper = require('casper').create(); 
var x = require('casper').selectXPath; 

casper.start('http://youraddess.com/', function() { 
    casper.then(function() { 
    casper.waitForSelector(x("xpath_selector")); 
    }); 
    var data = {}; 
    casper.then(function() { 
    data["//input[@id='userid']"] = "[email protected]"; 
    data["//input[@id='password']"] = "asdf"; 
    casper.fillXPath(x("//form[]"), data, false); 
    }); 
    casper.then(function() { 
    casper.click(x("//button[@id='btnSubmit']")); 
    }); 
    casper.then(function() { 
    casper.waitWhileSelector(x("xpath_selector")); 
    }); 
}); 
casper.thenOpen('http://chaseonline.com/section/1/module/2/abc.jsp', function() { 
    // now this page never loads because the page requires a logged in session 
    // but casperjs doesn't appear to automatically propagate the session 
    casper.then(function() { 
    casper.echo(this.getTitle()); 
    casper.capture('test.png'); 
    }); 
}); 

casper.run(); 

세션()는 항상 같은 실행까지입니다. 새로운 것을 열 수있는 가능성이 있지만 그게 어렵습니다.

+0

실제 URL과 로그인 정보를 제공 할 수 없습니다. 여기에 더 많은 정보가 있습니다 : –

+0

분명히이 thenOpen (url)에서 사용할 수없는 로그인 세션처럼 보입니다. - 로그인 한 후 스크린 샷을 캡처하고 로그인이 성공했음을 알 수 있습니다. - thenOpen (url)을 홈 페이지 (인증이 필요하지 않음) 또는 google.com과 같이 변경하면 스크립트가 작동합니다. 즉, 마지막 URL의 제목을 인쇄합니다. –

+0

phantomjs 또는 slimerjs를 사용합니까? 일반적으로 세션은 전체 실행 중에 저장됩니다 (casper.run()). – dasmelch