Symfony2 Functional Testing – Clique nos elementos com a interação do jQuery

Estou fazendo alguns testes funcionais para uma aplicação feita com o Symfony2 (2.1) e estou com um problema.

Eu tenho algumas partes do site que são carregadas quando o usuário clica em um link ou outro elemento, mas essas ações são executadas usando as chamadas jQuery e $ .post. Como posso fazer com que o rastreador do Symfony2 faça essas chamadas?

Quando faço algo assim:

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

O rastreador obtém o “href” do elemento “a” e o lança, mas o “href” está vazio e uma function “click ()” é associada a esse elemento, impedindo a ação de clique com “preventDefault ()”.

Obrigado a todos !! 🙂

Os testes funcionais do Symfony exercitam seu código chamando diretamente o kernel do Symfony. Eles não são executados através de um navegador da web e, portanto, não suportam javascript (que simplesmente não é executado).

Se não for possível executar seu aplicativo sem o javascript, você precisará usar outra ferramenta para testes funcionais. Uma das opções é usar o Mink com um dos drivers que suportam javascript (como o Selenium2 ).

Eu poderia usar um navegador “headless” para essa tarefa como PhantomJS .

O PhantomJS é um script WebKit sem header com uma API JavaScript. Ele tem suporte rápido e nativo para vários padrões da web: manuseio DOM, seletor CSS, JSON, Canvas e SVG.

Para facilitar o seu trabalho, você pode usar o CasperJS

O CasperJS é um complemento do PhatomJS, que traz uma API muito aprimorada para facilitar a criação de streams de trabalho de raspagem e automação.

No seu caso, onde o contexto da web que você está tentando rastrear inclui conteúdo dynamic por meio de JQuery e AJAX, o CasperJS é uma excelente opção se você quiser usar JavaScript para conseguir isso. Você pode usá-lo para acionar events, adicionar etapas do processo, include funções para aguardar e validar após cada chamada ajax antes de processar qualquer próxima etapa.

Aqui um exemplo de como rastrear um site com CasperJS e JQuery: CasperJs e Jquery com Selects encadeados

Aqui um exemplo de como rastrear um site com CasperJS e apenas JavaScript: CasperJS listas de seleção dinâmicas

O Symfony não suporta javascript, Ajax, Jquery. É usado pelo phpunit para testar as funcionalidades do php. Não foi feito para isso.

Você pode usar casperjs . Com CasperJS você poderia fazer seu teste funcional como com seu rastreador no Symfony e obter todo o código javascript e css.