2016-06-12 2 views
1

기본 CasperJS 스크립트가 있는데, 아마존 검색 상자에 사전 정의 된 검색어가 삽입되며 스크립트를 실행하고 캡쳐 된 이미지 상자의 텍스트를 잘 볼 수 있습니다.CasperJS 명령 줄을 통해 변수 번호를 전달하면 숫자 대신 일부 문자가 표시됩니다.

나는 그것을 동적으로 만들고 검색 용어를 미리 정의하는 대신 명령 줄을 통해 전달합니다. 나는이 작업을 수행 할 때이 캡처 된 이미지를 볼 때

casperjs amazon.js --barcode=4380758484375 

그러나, 나는 아마존 사이트의 검색 필드에 텍스트를 얻을 수 없습니다. 나는 그것이 echo'ed로서 가치가 전달되고있다 알아요.

이번 주말에 매우 제한되고 배우기 시작한 경험으로, var를 정의해야하는지 궁금합니다. 테스트 목적으로 바코드는 명령 줄을 통해 전달되는 값으로 설정되고 barcode1은 미리 정의됩니다.

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

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

casper.userAgent('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)'); 


casper.echo("Casper CLI passed args:"); 
require("utils").dump(casper.cli.args); 

casper.echo("Casper CLI passed options:"); 
require("utils").dump(casper.cli.options); 


var barcode = casper.cli.get("barcode"); 
var barcode1 = "5030945112877"; //casper.cli.get("barcode"); 


casper.echo("*"+barcode1+"*"); 


casper.start('https://www.amazon.co.uk/'); 

casper.then(function() { 
    this.sendKeys('#twotabsearchtextbox', barcode); 
    console.log('Entering Search Term '+barcode+' Into Amazon Search Field'); 
    casper.capture('amazon.png'); 
}); 

casper.run(); 

내가 --barcode=fifa으로 설정하면 작동합니다. 내가 --barcode=fifa123로 설정하는 경우에도 작동하지만, 내가 캡처 이미지에서, --barcode=123로 설정하면 나는 확장 된 문자가 Raw parameter values 참조 123

+0

나는 라스베리 파이에서 실행되는 CasperJS 1.1.1 및 PhantomJS 1.9.8이 있습니다. 여전히 똑같은 문제와 저의 삶에 대해 그것을 해결해줍니다. – Skydiver1977

+0

나는 라스베리 파이 1에서 CasperJS 1.1.1 및 PhantomJS 1.9.7을 사용해 보았습니다. 정확히 당신에게 효과가없는 것은 무엇입니까? 스크린 샷에서 내가 전달한 것을 봅니다.코드에서 첫 번째'echo'는'barcode1'에 대한 것이고'barcode'에 대한 것이 아닙니다. –

+0

내가 문제를 발견했다고 생각합니다. --barcode = fifa로 설정하면 작동합니다 --barcode = fifa123 그것도 작동하지만, 만약 내가 그것을 설정 - barcode = 123 캡쳐 이미지에서 확장 된 char appoke 123, 그래서 내가 바코드 바코드 몇 가지를 정의 할 수있다 궁금해. – Skydiver1977

답변

1

에 해당하는 참조 : 기본적으로

, CLI를 객체는

CasperJS 자동으로 적절한 유형으로 CLI 옵션을 구문 분석합니다 [...] 모든 전달 된 인수는 적절한 감지 유형에 캐스팅 & 처리합니다. 숫자를 입력하면 숫자로 변환됩니다. 이것은 문제가있는 것은 아니지만이 숫자는 casper.sendKeys()에 전달 되었기 때문에 문자열로 처리되지 않습니다. casper.sendKeys()은 PhantomJS의 래퍼입니다 (page.sendEvent()).이 정수는 char codes입니다. 흔적을 조금 후

var barcode = casper.cli.raw.get("barcode"); 
// or 
var barcode = "" + casper.cli.get("barcode"); 
0

을하고 그것은 단지 명령 줄을 통해 다수의 문제가 존재하는 곳이다 통과하는 것 같다 오류 :

당신은 자신을 원시 값을 사용하거나 문자열로 변환해야합니다. 대신

casper.cli.get("barcode"); 

casper.cli.raw.get("barcode"); 

를 사용하여

문제가 해결이 내가 볼 수있는 CasperJS 버전 기회 때문이다. 또한 다음 사이트를 참조하십시오. https://github.com/casperjs/casperjs/issues/248