Eclipse中開發測試腳本

 我們已經從前面幾篇的文章中基本瞭解了自動化測試的原理了,那麼開始開發我們的第一條自動化測試腳本吧。開發環境配置好了以後,打開集成開發環境Eclipse,新建一個Maven項目:


新建Maven項目以後,把之前錄製的那一段Java類放進來,作爲maven項目的第一個自動化測試腳本
 

導入這個腳本後,編譯會有很多錯誤,主要是因爲缺少依賴的第三方jar,這裏Maven的優勢就出來了,打開項目的pom.xml文件,在文件中加入下面這一段:

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-remote-driver</artifactId>
<version>2.47.1</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.47.1</version>
</dependency>
</dependencies>

 然後更新一下項目,就會自動下載依賴的第三方jar了,下載完成後,編譯通過。下面是完整的代碼:

package learn;

import static org.junit.Assert.fail;

import java.util.concurrent.TimeUnit;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.NoAlertPresentException;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class firstScript {

private WebDriver driver;
private String baseUrl;
private boolean acceptNextAlert = true;
private StringBuffer verificationErrors = new StringBuffer();

@Before
public void setUp() throws Exception {

driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}

@Test
public void test1() throws Exception {

driver.get(baseUrl + "/");
driver.findElement(By.id("kw")).click();
driver.findElement(By.id("kw")).clear();
driver.findElement(By.id("kw")).sendKeys("test");
driver.findElement(By.id("su")).click();
}

@After
public void tearDown() throws Exception {

driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}

private boolean isElementPresent(By by) {

try {
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}

private boolean isAlertPresent() {

try {
driver.switchTo().alert();
return true;
} catch (NoAlertPresentException e) {
return false;
}
}

private String closeAlertAndGetItsText() {

try {
Alert alert = driver.switchTo().alert();
String alertText = alert.getText();
if (acceptNextAlert) {
alert.accept();
} else {
alert.dismiss();
}
return alertText;
} finally {
acceptNextAlert = true;
}
}
}

上面這段腳本是IDE錄製下來的,有一些不必要的方法可以刪掉,
isElementPresent是查看元素是否顯示,isAlertPresent是判斷頁面上是否有alert窗口彈出,closeAlertAndGetItsText是關閉alert窗口,並獲取alert的文本信息。處理後的腳本實際上只有下面一段是有用的:

private WebDriver driver;
private String baseUrl;

@Before
public void setUp() throws Exception {

driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}

@Test
public void test1() throws Exception {

driver.get(baseUrl + "/");
driver.findElement(By.id("kw")).click();
driver.findElement(By.id("kw")).clear();
driver.findElement(By.id("kw")).sendKeys("test");
driver.findElement(By.id("su")).click();
}

@After
public void tearDown() throws Exception {

driver.quit();
} 
 
針對這條腳本,下面逐行解釋一下 

@Before  //這個註解是JUnit測試框架提供的一個方法,表示在運行該測試類之前,不管方法放在測試類什麼地方,它是最先執行的
driver = new FirefoxDriver();  //這裏的實例化使driver對象指向FirefoxDriver,啓動Firefox瀏覽器。
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);  //這是一個隱性的等待方法,等待瀏覽器在30秒內啓動。

@Test  //也是JUnit的註解方法,表示這是測試的方法對象

driver.get(baseUrl + "/");          //get方法,打開指定的URL地址
driver.findElement(By.id("kw")).click();  //涉及到三個方法,1.findElement是最常用的查找元素的方法,2.By.id通過元素的id來定位需要操作的 元素,所支持的很多,後面再詳細說明,3.click點擊元素
driver.findElement(By.id("kw")).clear();  //clear清空元素內的所有文本內容
driver.findElement(By.id("kw")).sendKeys("test");  //sendKeys輸入指定文本內容到指定元素
driver.findElement(By.id("su")).click();

@After //這個註解也是JUnit測試框架提供的一個方法,表示在運行該測試類後,不管方法放在測試類什麼地方,它是最後執行的
driver.quit(); 關閉瀏覽器。

每個測試類中只能有一個before和after註解,但是可以有多給@Test註解。

       瞭解了整個腳本的意義以後,我們就可以開始運行腳本,運行之前確保安裝了Firefox瀏覽器。 右鍵點擊測試類 - Run As - JUnit Test,運行完以後會出現JUnit報告,下面這個報告表示測試通過。
 

       上面是一條完整的腳本運行過程,從測試的角度看,這條自動化腳本的用例只有測試步驟,並不是一條完整的用例,就需要對腳本進行處理,加上前提條件,實際結果跟期望結果對比等邏輯。這就需要用到WebDriver的其它方法,也就是需要熟悉Selenium的API了,我們以後再講。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章