병렬 실행 Selenium: 세션 처리 및 TestNG 의존

스크립트를 병렬로 실행하는 방법을 이해하려면 먼저

세션 처리가 필요한 이유는 무엇입니까?

테스트 실행 중에는 Selenium WebDriver는 주어진 명령을 실행하기 위해 항상 브라우저와 상호 작용해야 합니다. 실행 시 현재 실행이 완료되기 전에 다른 누군가가 동일한 시스템 및 동일한 유형의 브라우저에서 다른 스크립트의 실행을 시작할 수도 있습니다.

세션 처리

이러한 상황에서는 서로 다른 두 가지 실행이 서로 겹치지 않도록 하는 메커니즘이 필요합니다. 이는 세션 처리를 사용하여 달성할 수 있습니다. Selenium.

세션 처리를 달성하는 방법 Selenium 웹드라이버?

소스코드를 확인해보면 Selenium WebDriver를 실행하면 'sessionId'라는 변수를 찾을 수 있습니다. WebDriver 객체의 새 인스턴스를 생성할 때마다 새로운 'sessionId'가 생성되어 해당 특정 인스턴스와 연결됩니다. Firefox/Chrome/IE 드라이버().

세션 처리 달성 Selenium 웹드라이버

따라서 이후에 수행하는 모든 작업은 해당 특정 항목에서만 실행됩니다. Firefox 브라우저 세션.

세션 처리 달성 Selenium 웹드라이버

이는 내장된 기능이므로 세션 ID를 명시적으로 할당할 필요가 없습니다.

코드 예 : 여기서는 두 개의 서로 다른 WebDriver에 대해 두 개의 서로 다른 세션이 생성됩니다.

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class SessionHandling {
public static void main(String...strings ){
    //First session of WebDriver
    WebDriver driver = new FirefoxDriver();
    //Goto guru99 site
    driver.get("https://demo.guru99.com/V4/");
    
    //Second session of WebDriver
    WebDriver driver2 = new FirefoxDriver();
    //Goto guru99 site
    driver2.get("https://demo.guru99.com/V4/");
}
}

병렬 테스트를 실행하는 방법 Selenium

여러 테스트를 동시에 실행하고 싶은 상황이 있습니다.

이러한 경우 "병렬" 속성을 사용할 수 있습니다.

다음을 사용하여 병렬 테스트 실행 Selenium

suite 태그의 병렬 속성은 다음 네 가지 값을 허용할 수 있습니다.

테스트 내부의 모든 테스트 케이스 태그 지원 xml 파일이 병렬로 실행됩니다.
수업 내부의 모든 테스트 케이스 Java 수업은 병렬로 진행됩니다
방법 @Test 주석이 있는 모든 메서드는 병렬로 실행됩니다.
인스턴스 동일한 인스턴스의 테스트 케이스는 병렬로 실행되지만 두 개의 서로 다른 인스턴스의 두 가지 메서드는 서로 다른 스레드에서 실행됩니다.

thread-count 속성을 사용하면 이 실행에 할당해야 하는 스레드 수를 지정할 수 있습니다.

전체 예: 이 예에서는 세 가지 테스트 사례가 병렬로 실행되어 로그인 데이터를 채웁니다. https://demo.guru99.com/

전체 프로젝트는 다음과 같습니다:

다음을 사용하여 병렬 테스트 실행 Selenium

TestGuru99MultipleSession.java

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;
public class TestGuru99MultipleSession {
    @Test    
    public void executSessionOne(){
            //First session of WebDriver
        System.setProperty("webdriver.chrome.driver","chromedriver.exe");
            WebDriver driver = new ChromeDriver();
            //Goto guru99 site
            driver.get("https://demo.guru99.com/V4/");
            //find user name text box and fill it
            driver.findElement(By.name("uid")).sendKeys("Driver 1");
            
        }
        
    @Test    
        public void executeSessionTwo(){
            //Second session of WebDriver
        System.setProperty("webdriver.chrome.driver","chromedriver.exe");
        WebDriver driver = new ChromeDriver();
            //Goto guru99 site
        driver.get("https://demo.guru99.com/V4/");
        //find user name text box and fill it
        driver.findElement(By.name("uid")).sendKeys("Driver 2");
        
        }
        
    @Test    
        public void executSessionThree(){
            //Third session of WebDriver
        System.setProperty("webdriver.chrome.driver","chromedriver.exe");
        WebDriver driver = new ChromeDriver();
            //Goto guru99 site
        driver.get("https://demo.guru99.com/V4/");
        //find user name text box and fill it
        driver.findElement(By.name("uid")).sendKeys("Driver 3");
        
        }        
}

TestNG.XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestSuite" thread-count="3" parallel="methods" >
<test name="testGuru">
<classes>
<class name="TestGuru99MultipleSession">
</class>
</classes>
</test>
</suite>

테스트 케이스 순서 및 종속성

순서와 종속성을 설정할 수 있습니다. 테스트 케이스 실행.

'testGuru99TC1'과 'testGuru99TC2'라는 두 개의 테스트 케이스가 있고 'testGuru99TC2' 이전에 'testGuru99TC1' 테스트 케이스를 실행한다고 가정해 보겠습니다. 이 경우 'dependentOnMethods' 속성을 사용하여 종속성과 실행 순서를 만듭니다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestSuite" thread-count="3" parallel="methods" >
<test name="testGuru">
<classes>
<class name="TestGuru99MultipleSession">
<include value="testGuru99TC1" dependsOnMethods=" testGuru99TC2"/>
<include value="testGuru99TC2"/>
</class>
</classes>
</test>
</suite>

제품 개요

  • WebDriver의 새 인스턴스에 대해 새 sessionID가 생성됩니다.
  • 하나의 세션은 하나의 특정 브라우저와 바인딩됩니다.
  • 속성 스레드와 병렬을 사용하여 스크립트를 병렬로 실행합니다.
  • 속성 종속성을 사용하여 실행 테스트 순서를 설정할 수 있습니다.