Pergunta

Eu preciso a melhor maneira de inspecionar cabeçalhos de resposta HTTP com selênio. Olhei em torno dos docs selênio e não vejo nenhuma maneira fácil de fazê-lo. Ajuda é muito apreciada.

Foi útil?

Solução

Eu já respondi a essa pergunta algumas vezes em StackOverflow. Pesquisar minhas respostas anteriores para desenterrá-lo. A chave que você tem que escrever algum código Java personalizado que estende ProxyHandler e SeleniumServer. Você também precisa usar um lançamento após 1.0 beta 2.

Quanto às pessoas que pedem por que você gostaria de fazer isso: há um monte de razões. No meu caso, estamos testando um aplicativo AJAX pesada e quando as coisas dão errado, uma das primeiras coisas que depuração é o fio de rede. Isso nos ajuda a ver se a chamada AJAX aconteceu e, em caso afirmativo, qual a resposta foi. Na verdade, estamos automatizado a recolha desta informação e capturá-lo (juntamente com uma captura de tela) com cada teste Selenium.

Outras dicas

captureNetworkTraffic () API em DefaultSelenium capturas http cabeçalhos de solicitação / resposta e você pode acessá-los em html / formato xml / plain.

Aqui está o código de exemplo:

Selenium s = new DefaultSelenium(...);
s.start("captureNetworkTraffic=true");
s.open("http://www.google.com");
String xml = s.captureNetworkTraffic("xml"); // html, plain
s.stop();

Eu não usaria Selenium para este tipo de teste e sugerir que você resolver uma variedade de testar problemas com ferramentas diferentes. o que fazemos é:

  • Use testes de unidade para código de teste: métodos e classes

  • Testes de integração para testar como componentes de aplicativos pendurar juntos

  • A estrutura de teste funcional simples como Canoo WebTest (ou algum equivalente) para as coisas do assert como http cache de cabeçalhos, estrutura básica da página, o redirecionamento simples e configuração de cookies / valores

  • testa Bespoke para garantir a validade de páginas com os padrões W3C

  • JsUnit para testar classes e métodos JavaScript criamos

  • Selenium para UI teste de funcionalidade / comportamento ea integração de Javascript naquelas páginas

Vale a pena passar um tempo quebrando a responsabilidade de testar diferentes aspectos do sistema usando essas ferramentas diferentes, uma vez usando apenas selênio pode causar problemas:

  • A maior suíte, mais lento que correm. Na verdade selênio é inerentemente mais lento em comparação com as outras ferramentas mencionadas
  • Ele lida com testes de comportamento / funcional bem mas, no entanto XPaths pode ser frágil e pode exigir cada vez mais tempo e esforço para manter
  • geralmente requer que você configurar 'como se-vida real' dados com seu aplicativo para percorrer cenários de usuário (que pode ser confuso e ter um monte de tempo)

Existem também algumas técnicas - o que você pode ou não se deparam - que você pode usar para fazer seus testes Selenium mais resiliente .

Eu vim com uma solução que utiliza um proxy embutido, cortesia do projeto Proxoid.

Sua leve, ao contrário de praticamente todas as outras alternativas lá fora (como BrowserMob ou mesmo LittleProxy)

Veja o HOWTO, com código, aqui: http://www.supermind.org/blog/968/howto-collect-webdriver-http-request-and-response-headers

O que eu fiz para lidar com isso usando Selenium (não Selenium RC) era converter os testes de HTML em JSP e, em seguida, utilizar Java onde for necessário para ler cabeçalhos ou fazer o material que JavaScript (selênio é apenas Javascript) não podia fazer.

Talvez você poderia dar alguns detalhes sobre como você pretende usar Selenium?

Leia as cookies de sessão de selênio e, em seguida, usar um fora da biblioteca HTTP real de selênio para solicitar a página específica.

Aqui está o código Python:

# get session cookies from Selenium
cookies = {}
for s_cookie in self.selenium.get_cookies():
    cookies[s_cookie["name"]]=s_cookie["value"]

# request the pdf using the cookies:
response = requests.get(self.full_url('/vms/business_unit/2002/operational_unit/200202/guest/40/bill/pdf/'), cookies = cookies)
self.assertEqual(response.headers["content-type"], "application/pdf")
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top