1

아래에 설명 된대로 Web Driver에 코드 조각이 있습니다. 두 개의 @Test 메서드가 하나의 클래스에 있는데, 이는 testng.xml을 사용하여 병렬로 실행하려고합니다.webdriver 및 TestNG를 사용하여 단일 클래스 파일에서 두 개의 @Test 메서드를 실행하는 방법

아무도 내가 실행하고 때 나는 그것이 2 브라우저를 열고 4 배의 위의 코드 전체를 실행하지만 내 관심사는 내가 두 @Test를 실행하려면이다, 여기에 잘못된

public class CrossBrowserScript { 

    WebDriver driver; 

    @BeforeTest 

    @Parameters("browser") 

    public void setup(String browser) throws Exception{ 

     //Check if parameter passed from TestNG is 'firefox' 

     if(browser.equalsIgnoreCase("firefox")){ 

     //create firefox instance 

      driver = new FirefoxDriver(); 

     } 

     //Check if parameter passed as 'chrome' 

     else if(browser.equalsIgnoreCase("chrome")){ 

      //set path to chromedriver.exe You may need to download it from http://code.google.com/p/selenium/wiki/ChromeDriver 

      System.setProperty("webdriver.chrome.driver","E:\\Maven\\chromedriver.exe"); 

      //create chrome instance 

      driver = new ChromeDriver(); 

     } 

else if(browser.equalsIgnoreCase("ie")){ 

      //set path to IEdriver.exe You may need to download it from 

    // 32 bits http://selenium-release.storage.googleapis.com/2.42/IEDriverServer_Win32_2.42.0.zip 

    // 64 bits http://selenium-release.storage.googleapis.com/2.42/IEDriverServer_x64_2.42.0.zip 

      System.setProperty("webdriver.ie.driver","E:\\Maven\\IEDriverServer.exe"); 

      //create chrome instance 

      driver = new InternetExplorerDriver(); 

     } 

     else{ 

      //If no browser passed throw exception 

      throw new Exception("Browser is not correct"); 

     } 

     driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

    }  
} 

package checking; 

import java.util.concurrent.TimeUnit; 

import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.testng.annotations.Parameters; 
import org.testng.annotations.Test; 

public class test extends CrossBrowserScript{ 


    @Parameters({ "browser" }) 
    @Test 
    public void checking_value(){ 

     //WebDriver driver = new FirefoxDriver(); 
     driver.get("http://www.sourcefuse.com/"); 
     driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 

     if(driver.getPageSource().contains("Our Work")) 
     { 
      System.out.println("Found the text"); 
     } 

     else 
     { 
      System.out.println("Not able to found the text"); 
     } 

    } 

    @Parameters({ "browser" }) 
    @Test 
    public void second_method(){ 


     driver.get("http://www.sourcefuse.com/"); 
     driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 

     if(driver.getPageSource().contains("Our Work")) 
     { 
      System.out.println("Found the text"); 
     } 

     else 
     { 
      System.out.println("Not able to found the text"); 
     } 

    } 

    } 

************************************************************* 
TestNG.xml File 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 

<suite name="Multiple Tests" parallel="tests" thread-count="2"> 

    <test name="Test One"> 

     <parameter name="browser" value="Chrome" /> 
     <classes> 
      <class name="checking.test"> 

      </class> 

     </classes> 
    </test> 




    <test name="Test two"> 

     <parameter name="browser" value="Firefox" /> 
     <classes> 
      <class name="checking.test"> 
      </class> 

     </classes> 
    </test> 

</suite> 

를하고있는 중이 야 무엇을 말해 줄 수 2 개의 다른 브라우저에서.

+0

당신이 아마도 TestNG가 Test로 referes하는 것을 혼란스럽게 할 것입니다. parallel = "tests"라고 말하면 ** Test One ** 및 ** Test two ** configuration에서 언급 한 모든 테스트를 고려해야합니다. 전체 클래스가 아닌 특정 테스트 만 포함하도록 구성을 변경하면 문제가 해결 될 수 있습니다. –

+0

이봐, 이봐, 너는 나에게 내가 구글을 검색했지만 아무 것도 찾지 못했을 때, 나는 여러 개의 브라우저 병렬 모드에서 하나의 클래스 파일의 @tests를 실행하고 싶을 때 알려 주실 수 있습니까? – Akash

+0

다른 사람 이 시나리오에서 나를 도와주세요 – Akash

답변

0

이 일을 할 수있는 방법은 2 개 개의 다른 클래스를 둘 다 확장하여 CrossBrowserScript (즉 testChrome 및 testFirefox)

으로이 방법을 고수하는 것입니다 XML이 시도 :

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 

<suite name="Multiple Tests" parallel="tests" thread-count="2"> 

    <test name="Test One"> 

     <parameter name="browser" value="Chrome" /> 
     <classes> 
      <class name="checking.testChrome"> 

      </class> 

     </classes> 
    </test> 




    <test name="Test two"> 

     <parameter name="browser" value="Firefox" /> 
     <classes> 
      <class name="checking.testFirefox"> 
      </class> 

     </classes> 
    </test> 

</suite> 
+0

당신의 대답은 해결 방법이지만이 질문에 대한 해결책은 아닙니다. 2 개의 다른 클래스를 2 개의 테스트로 만들고 병렬로 실행하면 어쨌든 제가 2 개의 클래스 파일로 2 개의 테스트를 실행하고 싶을 때 제 질문을 알기 쉽습니다. 이것이 가능한 경우 병렬로 다른 브라우저를 사용하십시오. – Akash

+0

자, parallel = "methods"를 변경할 수는 있지만 xml params를 사용할 수 있다고는 생각하지 않습니다. 브라우저를 프로 그램별로 처리해야합니다. 행운을 빌어 요 –