2014-10-21 2 views
1

PhantomJS로 AngularJS 튜토리얼 (http://angular.github.io/angular-phonecat/step-7/app)을 테스트하려고합니다. 실제로 검색을 입력 할 수 없습니다.Phantomjs로 AngularJS 테스트하기

var page = new WebPage(); 
page.open('http://angular.github.io/angular-phonecat/step-7/app', function() { 
    page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() { 
    page.evaluate(function() { 
     $("[ng-model=query]").click(); 
     $("[ng-model=query]").focus(); 
     $("[ng-model=query]").val("xoom"); 
     console.log($('ul.phones').text()); 
    }); 
    phantom.exit() 
    }); 
}); 

답변

2

바인딩 직접 입력 값을 변경할 때 작동하지 않는 것 : 여기

는 지금까지에서 나는 것입니다. PhantomJS의 기본 입력 방법 sendEvent을 사용해야합니다.

page.open('http://angular.github.io/angular-phonecat/step-7/app', function() { 
    page.evaluate(function() { 
     document.querySelector('[ng-model=query]').focus(); 
    }); 
    page.sendEvent("keypress", "xoom"); 
    page.evaluate(function() { 
     console.log(document.querySelectorAll('ul.phones li').length + " products"); 
    }); 
    phantom.exit(); 
}); 
+0

함수가 실행될 때 별도의 작업을해야했지만 page.sendEvent ("keypress", "xoom"); 트릭을 했어! – Dave

+0

상호 작용할 요소가 선택 일 때 어떻게 진행합니까? 이 메서드는 불행히도 작동하지 않습니다. – Puce

+0

@Puce'select' 요소와'page.sendEvent ("keypress", page.event.key.Down);에 집중하십시오. 나는 Fanch이 작년에 select로이 방법을 언급했다고 생각합니다. –