如何同時測試多種不同的瀏覽器 (Java/TestNG為例子)

如何同時測試多種不同的瀏覽器 (Java/TestNG為例子)

 

這篇文章主要說明當一個寫好的自動化測試程式,所指定的瀏覽器型態(IE、Chrome, FireFox..),

如何透過外部參數的方式,將自動化測試程式啟動執行。當然,自動化測試程式完全不需要修改。

這樣的情境特別適用在瀏覽器的相容性測試。

最後,我們會用Java/TestNG為例子,說明如何實作這樣的測試程式。

 

測試情境

這個測試我們將

1. 瀏覽Google 網站

2. 輸入 “Selenium” 搜尋

3.印出目前視窗的Title

同樣的測試個案,執行在FireFox 與Chrome

 

程式說明 – browser參數值的傳遞

這個程式我們主要透過 TestNG.XML 的參數設定來達到啟動多種瀏覽器。

TestNG.Xml 中我們設定

<parameter name=”browser” value=”Firefox”/>

因此在Java 程式中,透過下列方式,取得參數值browser

@Parameters({ “browser” })

public void openBrowser(String browser) {

…..

我們根據這個值browser啟動相對應的browser

程式說明 – 測試個案的相依性

這個程式我們定義兩個測試個案,一個是瀏覽google。另外一個是搜尋Selenium之後,印出視窗Title。

這兩個測試個案因為有先後順序,所以利用dependsOnMethods

因此visit_google_getTitle 會先執行,接著再執行search_TestCase

@Test
public void visit_google_getTitle()

@Test (dependsOnMethods = { “visit_google_getTitle” })
public void search_TestCase()

Java/TestNG 程式範例

TestNG.XML

[pastacode lang=”markup” message=”” highlight=”” provider=”manual”]

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel test suite" parallel="tests" thread-count="2">
  <test name="Firefox Test">
  <parameter name="browser" value="Firefox"/>
    <classes>
      <class name="myJava.MultipleBrowserTest"/>
    </classes>
  </test>
  <test name="Chrome Test">
  <parameter name="browser" value="Chrome"/>
    <classes>
      <class name="myJava.MultipleBrowserTest"/>
    </classes>
  </test>
   
</suite>

[/pastacode]

MultipleBrowserTest.Java

[pastacode lang=”java” message=”” highlight=”” provider=”manual”]

package myJava;


import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverException;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.testng.Assert;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class MultipleBrowserTest {

	private WebDriver driver;
	String baseURL = "http://www.google.com/";
	 
	@Parameters({ "browser" })
	@BeforeTest
	public void openBrowser(String browser) {
		try {
			if (browser.equalsIgnoreCase("Firefox")) {
				driver = new FirefoxDriver();
			} else if (browser.equalsIgnoreCase("Chrome")) {
				System.setProperty("webdriver.chrome.driver",
						"D:\\ETP Web Automation by Selenium Python\\ClassDemo\\chromedriver.exe");
				driver = new ChromeDriver();
			} else if (browser.equalsIgnoreCase("IE")) {
				System.setProperty("webdriver.ie.driver",
						"D:/Dev/Jars/IEDriverServer.exe");
				driver = new InternetExplorerDriver();
			}
			
		
		} catch (WebDriverException e) {
			System.out.println(e.getMessage());
		}

	}

	@Test
	public void visit_google_getTitle() {
		driver.navigate().to(baseURL);
		System.out.println("The Existing Window title: " +  driver.getTitle());
	}

	@Test (dependsOnMethods = { "visit_google_getTitle" })
	public void search_TestCase() throws InterruptedException {
		driver.findElement(By.name("q")).sendKeys("Selenium");
		driver.findElement(By.name("q")).submit();
		Thread.sleep(2000);
		System.out.println("The Window title of the Search: " + driver.getTitle());

          
	}

	@AfterTest 
	public void closeBrowser() {
		driver.quit();
	}
}

[/pastacode]

 

 

 

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *