2013-04-26 3 views
8

Symfony2 (2.1)로 수행 한 응용 프로그램에 대해 몇 가지 기능 테스트를하고 있는데 문제가 있습니다.Symfony2 기능 테스트 - jQuery 상호 작용이있는 요소를 클릭하십시오.

사용자가 링크 나 다른 요소를 클릭 할 때로드되는 웹 사이트의 일부가 있지만 이러한 작업은 jQuery 및 $ .post 호출을 사용하여 수행됩니다. Symfony2 크롤러가 어떻게 이러한 호출을 할 수 있습니까?

나는 같은 것을 할 때 : ") (클릭"

$link = $crawler->filter('ul.line_menu a')->eq(1)->link(); 
$crawler = $client->click($link); 

크롤러는 "A"요소의 "HREF"를 얻고 그것을 시작하지만, "HREF는"비어과를 함수가이 요소와 연결되어 "preventDefault()"로 클릭 동작을 방지합니다.

모두 감사합니다! :)

답변

7

symfony 기능 테스트는 Symfony 커널을 직접 호출하여 코드를 실행합니다. 그들은 웹 브라우저를 통해 실행되지 않기 때문에 자바 스크립트 (단순히 실행되지 않음)를 지원하지 않습니다.

javascript없이 응용 프로그램을 실행할 수없는 경우 기능 테스트를 위해 다른 도구를 사용해야합니다. 옵션 중 하나는 과 같은 자바 스크립트를 지원하는 드라이버 중 하나와 Mink을 사용하는 것입니다.

1

Symfony는 javascript, Ajax, Jquery를 지원하지 않습니다. phpunity를 테스트하기 위해 phpunit에서 사용합니다. 이것을 위해 만들어지지 않았습니다.

casperjs을 사용할 수 있습니다. CasperJS를 사용하면 Symfony의 크롤러와 같은 기능 테스트를 수행 할 수 있으며 모든 자바 스크립트와 CSS 코드를 얻을 수 있습니다.

4

나는이 작업을 위해 "헤드리스"브라우저를 PhantomJS으로 사용할 수 있습니다.

PhantomJS는 자바 스크립트 API가있는 헤드리스 WebKit입니다. DOM 처리, CSS 선택기, JSON, Canvas 및 SVG와 같은 다양한 웹 표준을 신속하고 기본으로 지원합니다.

작업을 용이하게하기 위해, 당신은 CasperJS

CasperJS 긁어 및 자동화 워크 플로우의 작성을 쉽게하기 위해 크게 개선 된 API를 제공 PhatomJS위한 동반자가 사용할 수 있습니다. 당신이 달성하기 위해 자바 스크립트를 사용하려는 경우 크롤링하려는 웹 컨텍스트 JQuery와 및 AJAX를 통해 동적 콘텐츠를 포함하고있는 사용자의 경우에,

는 CasperJS은 훌륭한 옵션입니다. 이벤트를 트리거하고, 프로세스 단계를 추가하고, 대기 할 함수를 포함하고, 다음 단계를 처리하기 전에 각 Ajax 호출 후에 유효성을 검사하는 데 사용할 수 있습니다. 단지 자바 스크립트 CasperJS로하고 웹 사이트를 크롤링하는 방법 다음 CasperJs and Jquery with chained Selects

예 : CasperJS dynamic selectlists

CasperJS와 jQuery로 웹 사이트를 크롤링 방법은 다음과

관련 문제