2016-08-28 3 views
0

Casperjs에 새로운입니다. 일부 로그인을 자동화하고 CMS에서 몇 가지 단계를 수행하려고 노력하고 있지만 글로벌 액세스 문제가 있습니다. casperjs에서 창 변수 evaluate() 기능. 아래 예제는 Google에서 jquery를 확인하는 것입니다. Jquery 페이지 및 일부 다른 전역 함수에 있지만 casperjs에서 액세스 할 수 없습니다. 변수를 찾을 수 없습니다 : 내가이 문제를 해결할 수있는 방법 $Casperjs는 브라우저 콘솔에서와 동일한 전역 개체에 액세스 할 수 없습니다.

`ReferenceError가 -

casper.start('https://www.google.ca/#hl=en', function() { 

// search for 'casperjs' from google form 
this.fill('form[action="/search"]', { q: 'casperjs' }, false); 
}); 

casper.then(function() { 
    this.evaluate(function jquery() { 
     console.log('looking for jquery ---'); 
     console.log($ + 'exists'); 
    }); 
}); 

오류가?

어떤 도움에 감사드립니다 :)

+0

는, 당신은 evaluate''를 통해 사용할 수 있습니다 또는'thenEvaluate'. 뭔가 다른 것이 틀림 없습니다. 또 다른 문제가 있지만,이 오류가 발생하지 않습니다 :'this'는'evaluate' 내부의'window'를 가리 킵니다. 따라서 this.capture는 실제로'window.capture'이고 오류 자체가 발생합니다. '캐스퍼 (casper) '는 페이지 컨텍스트에서 사용할 수 없습니다. –

+0

Google 검색에 jQuery가 없습니다. '$'는 다른 것입니다. Google은 브라우저에 따라 다른 페이지를 제공하기 때문에 Google 페이지를 자동화하려고해서는 안됩니다. 그리고 무엇이든간에 '$'없이 페이지를 제공 할 수도 있습니다. –

+0

@ArtjomB. 감사. 나는 1.33.8으로 phantomjs 버전을 다운 그레이드 한 후 내용 보안 정책으로 인해 인라인 스크립트를 실행하지 못한다는 오류를 더 많이 발견했기 때문에 창 개체가 생성되지 않습니다. – matharumanpreet00

답변

0

사용 jQuery를 들어 casperjs 페이지에서 분사 스크립트, 같은 : jQuery를 페이지에있는 경우

var casper = require('casper').create({ 
    some code here, 
    clientScripts: ['/path/to/jquery.js'], 
}); 
관련 문제