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設計模式的實現,還是非常有必要的。
而且細看這些封裝好的方法,其實是可以支持更多複雜的操作的,例如翻頁、選擇下拉選項、界面元素檢查以及屏幕截圖等等,這些方法的補充就看後續的業務需求了,如果有時間的話,我會從中抽出比較特殊而又有代表性的操作,結合這個框架進行介紹和演示的~~~·

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章