Selenium+Java+TestNG進行web自動化測試

嘿色幽黙發表於2020-11-07

1、學習web自動化,先要了解webdriver基礎知識,因為Selenium是基於webdriver技術實現自動化的。

Eclipse環境、webdriver基礎部分請參考:https://www.cnblogs.com/wmjone/p/9565596.html

2、基礎知識掌握以後,在eclipse裡下載TestNG框架,為啥不選JUint而選TestNG,因為TestNG自帶HTML報告。

TestNG外掛下載配置,請參考:https://www.cnblogs.com/xusweeter/p/6559196.html

3、上面完成以後Selenium+Java+TestNG進行web自動化測試已經成功了,由於TestNG自帶的HTML報告不是很完美,所以再作進一步處理,利用ReportNG修正報告部分。

[1]、先下載ReportNG所需jar包新增到eclipse關聯,然後配置testng.xml檔案(改用ReportNG生成HTML報告);

[2]、專案預設不建立testng.xml檔案,需手動建立,專案上點選右鍵選"TestNG"--"Convert to TestNG";

[3]、勾選Generate testng.xml,並設定testng.xml相關資訊,點選Next直至Finish;

[4]、開啟testng.xml作如下配置;

<listeners>
<listener class-name="org.uncommons.reportng.HTMLReporter" />
<listener class-name="org.uncommons.reportng.JUnitXMLReporter" />
</listeners>

[5]、專案上點選右鍵選"Properties"開啟配置頁,選"TestNG"作如下配置(取消TestNG的預設監聽);

[6]、執行java檔案,或者在testng.xml檔案上點選右鍵選"Run As"--"TestNG Suite"即可生成HTML報告;

[7]、報告預設存放在專案目錄的test-output資料夾下;

[8]、開啟index.html報告如下

[9]、測試程式碼如下

package com.selenium;

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.Reporter;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.AfterTest;

public class allTest {
	// 建立ChromeDriver物件
	WebDriver driver = new ChromeDriver();

	@Test
	public void case1() throws Exception {
		// 執行js指令碼(彈窗)
		String jstring = "alert('12345')";
		JavascriptExecutor js = (JavascriptExecutor) driver;
		js.executeScript(jstring);
		Thread.sleep(2000);
		// 處理彈窗
		Alert confirm = driver.switchTo().alert();
		// 獲取彈窗內容
		confirm.getText();
		// 相當於點選確認
		confirm.accept();

		// 斷言響應結果
		String stitle = driver.getTitle();
		Assert.assertEquals(stitle, "百度一下,你就知道");

		WebElement elem = driver.findElement(By.id("kw"));
		elem.clear();
		elem.sendKeys("上海");
		Reporter.log("case1通過");
		Thread.sleep(2000);
	}

	@Test
	public void case2() throws Exception {
		// 執行js指令碼(彈窗)
		String jstring = "alert('web測試')";
		JavascriptExecutor js = (JavascriptExecutor) driver;
		js.executeScript(jstring);
		Thread.sleep(2000);
		// 處理彈窗
		Alert confirm = driver.switchTo().alert();
		// 獲取彈窗內容
		confirm.getText();
		// 相當於點選確認
		confirm.accept();

		// 斷言響應結果
		String stitle = driver.getTitle();
		Assert.assertEquals(stitle, "百度一下,你就知道");

		WebElement elem = driver.findElement(By.id("kw"));
		elem.clear();
		elem.sendKeys("北京");
		Reporter.log("case2通過");
		Thread.sleep(2000);
	}

	@BeforeTest
	public void beforeTest() {
		// 設定驅動
		System.setProperty("webdriver.chrome.driver", "D:\\data\\webdriver\\chromedriver.exe");
		// 使視窗最大化
		driver.manage().window().maximize();
		// 開啟指定網頁
		driver.get("http://www.baidu.com");
	}

	@AfterTest
	public void afterTest() {
		// 關閉瀏覽器
		driver.quit();
	}

}

附:ReportNG所需jar包下載地址

https://download.csdn.net/download/cbc520/13087737

相關文章