Java Selenium框架的開發和優化教程-02
1.前言
在上一篇博文《Java Selenium框架的開發和優化教程-01》中,我已經介紹了框架的項目結構和核心代碼,因此這篇文章的主要內容就是演示如何編寫業務代碼,然後查看框架的運行結果等。
2.業務實現代碼
我以操作百度爲例,這個demo的業務很簡單,就是“打開百度首頁 -> 輸入關鍵字 -> 點擊搜索”。
業務代碼在項目中的結構如下圖:
2.1 將需要用到的界面元素封裝成UiFinder
這就是對於設計模式中,Page-Object模式的實現。在這個業務中,我需要三個元素:
- 百度首頁url
- 搜索輸入框
- 搜索按鈕
將他們初始化爲UiFinder,作爲靜態變量,保存在一個統一的BaiduUiFinders類中,代碼如下:
package com.javaseleniumdemo.impl;
import com.javaseleniumdemo.core.UiFinder;
import org.openqa.selenium.support.How;
/**
* @author Joy
*/
public class BaiduUiFinders {
public final static String URL = "http://www.baidu.com";
//搜索輸入框
public final static UiFinder searchInput = new UiFinder(How.ID,"kw");
//“百度一下”按鈕
public final static UiFinder searchButton = new UiFinder(How.ID,"su");
}
2.2 業務實現
我創建一個BaiduCrawler的類,作爲業務實現的代碼。然後爲類添加一個crawl()的方法,方法中就可以調用核心代碼中的UiActtions類中所提供的各種UI操作方法了,代碼如下:
package com.javaseleniumdemo.impl;
import com.javaseleniumdemo.core.UiActions;
import static com.javaseleniumdemo.impl.BaiduUiFinders.*;
/**
* @author Joy
*/
public class BaiduCrawler {
public void crawl(){
try{
UiActions.initialUiContext();
System.out.println("打開百度首頁。");
UiActions.navigateTo(URL);
UiActions.operationInterval(1000);
System.out.println("開始執行搜索。");
UiActions.sendKeys(searchInput, "Java Selenium框架的開發和優化教程");
UiActions.click(searchButton);
UiActions.operationInterval(1000);
} catch (Exception e){
e.printStackTrace();
System.out.println(e.getMessage());
} finally {
System.out.println("瀏覽器關閉。");
UiActions.disposeUiContext();
}
}
}
2.3 Main方法調用
Main方法調用代碼如下:
import com.javaseleniumdemo.impl.BaiduCrawler;
/**
* @author Joy
*/
public class Main {
public static void main(String[] args){
BaiduCrawler crawler = new BaiduCrawler();
crawler.crawl();
}
}
3.查看運行結果
使用debug模式,運行項目,運行正常,結果如圖:
4.後記
雖然演示的業務代碼非常簡單,但是框架中這種對於selenium方法的封裝,以及對Page-Object設計模式的實現,還是非常有必要的。
而且細看這些封裝好的方法,其實是可以支持更多複雜的操作的,例如翻頁、選擇下拉選項、界面元素檢查以及屏幕截圖等等,這些方法的補充就看後續的業務需求了,如果有時間的話,我會從中抽出比較特殊而又有代表性的操作,結合這個框架進行介紹和演示的~~~·