Execução paralela no selênio: manipulação de sessão & Dependência TestNG

Índice:

Anonim

Para entender como executar scripts em paralelo, vamos primeiro entender

Por que precisamos de manipulação de sessão?

Durante a execução do teste, o Selenium WebDriver precisa interagir com o navegador o tempo todo para executar determinados comandos. No momento da execução, também é possível que, antes que a execução atual seja concluída, outra pessoa inicie a execução de outro script, na mesma máquina e no mesmo tipo de navegador.

Em tal situação, precisamos de um mecanismo pelo qual nossas duas execuções diferentes não se sobreponham. Isso pode ser feito usando o Manuseio de Sessão no Selenium.

Como obter o gerenciamento de sessão no Selenium WebDriver?

Se você verificar o código-fonte do Selenium WebDriver, encontrará uma variável chamada 'sessionId'. Sempre que criamos uma nova instância de um objeto WebDriver, um novo 'sessionId' será gerado e anexado a esse driver específico do Firefox / Chrome / IE ().

Portanto, tudo o que fizermos depois disso será executado apenas naquela sessão do navegador Firefox em particular.

Como esta é uma funcionalidade embutida, não há necessidade explícita de atribuir o id de sessão

Exemplo de código: aqui, duas sessões diferentes serão geradas para dois WebDriver diferentes.

import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;public class SessionHandling {public static void main (String… strings) {// Primeira sessão do WebDriverDriver WebDriver = novo FirefoxDriver ();// Goto guru99 sitedriver.get ("http://demo.guru99.com/V4/");// Segunda sessão do WebDriverDriver WebDriver2 = novo FirefoxDriver ();// Goto guru99 sitedriver2.get ("http://demo.guru99.com/V4/");}}

Como executar testes paralelos com selênio

Existem situações em que você deseja executar vários testes ao mesmo tempo.

Nesses casos, pode-se usar o atributo "paralelo"

O atributo paralelo da tag suite pode aceitar quatro valores:

testes Todos os casos de teste dentro da tag do arquivo xml de teste serão executados paralelamente.
Aulas Todos os casos de teste dentro de uma classe Java serão executados paralelamente
métodos Todos os métodos com anotação @Test serão executados em paralelo.
instâncias Os casos de teste na mesma instância serão executados em paralelo, mas dois métodos de duas instâncias diferentes serão executados em threads diferentes.

O atributo thread-count permite que você especifique quantos threads devem ser alocados para esta execução.

Exemplo completo: neste exemplo, três casos de teste serão executados paralelamente e preencherão os dados de login em http://demo.guru99.com

O projeto completo será semelhante a:

TestGuru99MultipleSession.java

import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.testng.annotations.Test;public class TestGuru99MultipleSession {@Testepublic void executSessionOne () {// Primeira sessão do WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Driver WebDriver = novo ChromeDriver ();// Goto guru99 sitedriver.get ("http://demo.guru99.com/V4/");// encontre a caixa de texto do nome do usuário e preencha-adriver.findElement (By.name ("uid")). sendKeys ("Driver 1");}@Testepublic void executeSessionTwo () {// Segunda sessão do WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Driver WebDriver = novo ChromeDriver ();// Goto guru99 sitedriver.get ("http://demo.guru99.com/V4/");// encontre a caixa de texto do nome do usuário e preencha-adriver.findElement (By.name ("uid")). sendKeys ("Driver 2");}@Testepublic void executSessionThree () {// Terceira sessão do WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Driver WebDriver = novo ChromeDriver ();// Goto guru99 sitedriver.get ("http://demo.guru99.com/V4/");// encontre a caixa de texto do nome do usuário e preencha-adriver.findElement (By.name ("uid")). sendKeys ("Driver 3");}}

TestNG.XML

Ordem e dependência do caso de teste

Você pode definir a ordem e a dependência da execução do Caso de Teste.

Suponha que você tenha dois casos de teste, 'testGuru99TC1' e 'testGuru99TC2' e deseja executar o caso de teste 'testGuru99TC2' antes de 'testGuru99TC1'. Nesse caso, usaremos o atributo 'dependsOnMethods' para fazer a dependência e a ordem de execução.

Resumo

  • Um novo sessionID é criado para uma nova instância do WebDriver.
  • Uma sessão será vinculada a um navegador específico.
  • Usando thread de atributo e paralelo, você executa seus scripts em paralelo.
  • Você pode usar a dependência de atributo para definir a ordem de execução do teste