1.什麼是selenium
selenium是ThoughtWork的一款開源測試框架。
下載selenium2.0lib包,點選http://code.google.com/p/selenium/downloads/list
這是官方文件:http://seleniumhq.org/docs/
2.為什麼選擇selenium
自動化測試工具有很多了,QTP作為商業軟體功能強大。但是要把QTP整合到已有的測試平臺上面非常困難,selenium非常容易的可以整合到已有的測試平臺上面去。如果你是一個剛剛不如職場的新人不懂程式程式碼上手selenium有點困難,selenium需要一定的程式開發能力。為以後的測試平臺長遠考慮,故選用selenium測試框架。
selenium Java環境基本配置
1.安裝java虛擬機器JDK1.5版本以上。
2.下載安裝火狐瀏覽器,並安裝。
3.下載selenium支援火狐瀏覽器的IDE,通過這個IDE可以使用selenium語言編寫指令碼也可錄製操作指令碼。(不是必須安裝IDE)
4.安裝MyEclipse開發環境,並配置MyEclipse的環境。
3.selenium的基本使用
1.在Myeclipse建立一個JavaProject專案名稱自定義。
2.將下載的selenium-server-standalone-x.xx.x.jar,匯入到專案的Reference Libraries中。
3.從IDE中匯出的測試指令碼加入工程中。
4.在註解@Test中可以編寫自動化測試步驟或指令碼了。
選擇元素
WebElement element = driver.findElement(By.id(“passwd-id”));
在輸入框中輸入內容:
element.sendKeys(“test”);
將輸入框清空:
element.clear();
獲取輸入框的文字內容:
element.getText();
找到下拉選擇框的元素:
Select select = new Select(driver.findElement(By.id(“select”))); 選擇對應的選擇項:
上傳檔案的元素操作:
WebElement adFileUpload =driver.findElement(By.id(“WAP-upload”));
String filePath = “C: est\uploadfile\media_ads\test.jpg”;
adFileUpload.sendKeys(filePath);
Windows 和 Frames之間的切換
一般來說,登入後建議是先:
driver.switchTo().defaultContent();
切換到某個frame:
driver.switchTo().frame(“leftFrame”);
從一個frame切換到另一個frame:
driver.switchTo().frame(“mainFrame”);
切換到某個window:
driver.switchTo().window(“windowName”);
呼叫Java Script
Web driver對Java Script的呼叫是通過JavascriptExecutor來實現的,例如:
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript(“(function(){inventoryGridMgr.setTableFieldValue(`”+ inventoryId + “`,`” + fieldName + “`,`”
+ value + “`);})()”);
|
頁面等待
頁面的操作比較慢,通常需要等待一段時間,頁面元素才出現,但webdriver沒有提供現成的方法,需要自己寫。
等一段時間再對頁面元素進行操作:
public void waitForPageToLoad(longtime) {
try {
Thread.sleep(time);
} catch (Exceptione) {
}
}
|
在找WebElement的時候等待:
public WebElementwaitFindElement(By by) {
returnwaitFindElement(by, Long.parseLong(CommonConstant.GUI_FIND_ELEMENT_TIMEOUT),Long
.parseLong(CommonConstant.GUI_FIND_ELEMENT_INTERVAL));
}
public WebElementwaitFindElement(By by, long timeout, long interval) {
long start = System.currentTimeMillis();
while (true) {
try {
return driver.findElement(by);
} catch(NoSuchElementException nse) {
if (System.currentTimeMillis()- start >= timeout) {
throw newError(“Timeout reached and element[” + by + “]not found”);
} else {
try {
synchronized(this) {
wait(interval);
}
} catch(InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
|
4.selenium注意點
1.啟動瀏覽器,如果不是預設安裝需要指定啟動路徑 System.setProperty(“webdriver.firefox.bin”, PrivateDataSource.fireFoxPath);
2.driver在每次結束的時候都需要退出使用driver.quit();可以把driver產生的零時檔案刪除掉,如果直接關閉瀏覽器或driver.close();那麼零時檔案不會被刪除,會
一直存在在你的C盤中,非常耗資源。
5.自動化測試策略
目前專案繁多而非產品那樣的專業化,如果每一個專案都做自動化測試那麼相對的工作量繁重,質量參差不齊無法很好的控制。
自動化測試針對專案應注重以下點進行實施:
1.專案進度督促使用自動化測試核心模組核心流程是否正常。
2.把控自動化測試質量,如果質量不過關還不如不做自動化測試。
3.進行並行開發策略,開發人員根據介面設計進行功能開發,測試人員根據介面設計進行自動化指令碼開發。
4.通過jenkins持續整合平臺,每次開發人員或測試人員提交程式碼都會自動去執行一偏測試指令碼,把執行中出現的問題暴露出來,讓開發人員及時修改。
通過學習使用selenium自動化測試框架,瞭解到測試不是簡單的測試工作,她摻雜了專案管理,需求分析,人際溝通協調等等技能,需要不斷的實踐增強能力勝任更加嚴峻的專案工作。
最新內容請見作者的GitHub頁:http://qaseven.github.io/