基於Java+Selenium的WebUI自動化測試框架(一)---頁面元素定位器


    對於自動化測試,尤其是UI的自動化測試。是很多做黑盒功能測試的同學,入門自動化測試一個最為直觀的或者說最容易理解的途徑之一。

 對於手工測試和自動化測試的優劣,網上有很多論述,在這里不作展開討論。但是,讓測試人員解放生產力,提高效率,把精力關注與最為重要的核心業務邏輯與測試設計上,是每個測試團隊所必需要關注的。因此,在適當的范圍內開展自動化測試,是可以提高整個測試團隊的生產率的。

  對於Selenium,這個東西是一個瀏覽器應用程序測試工具。之所以選擇它做WebUI的自動化測試主要是因為它有以下兩大優勢:

1.直接在瀏覽器中運行,就像真實用戶所做的一樣,可以模擬終端用戶的操作,從最終客戶的角度來測試應用程序。(這一點和黑盒功能測試很像吧。)

2.可以在 Windows、Linux 和 Macintosh上的 Internet Explorer、Chrome和 Firefox 中運行。其他測試工具都不能覆蓋如此多的平台。(嗯,多面能手)

   對於Java語言,我只想說你用你最拿手的就好。一個好的測試人員,不應該被開發語言所束縛。不管是Java/Python/Ruby/C#.........只要你熟悉,就盡量把它用起來吧。語言只是工具。

   接下來,我們好好的慢慢的理解一些東西,然后來逐步的去寫一點東西,來認識一下自動化測試框架是個什么東西。

 PS:閱讀本文的同學,希望擁有JAVA語言編程基礎,了解基本的JAVA語法與數據結構,同時,對Selenium的基本API有所了解。

 在寫這個框架之前,我們要明確我們主要操作的對象是什么。------->頁面元素。

我們要了解java在使用selenium時的基本操作。例如,使用以下代碼:

driver.findElement(By.xpath("/html/body/div/div/div[2]/form/button")).click();

在這里,driver的意思是定義的WebDriver,findElement是driver這個對象調用的方法----->尋找頁面元素,By.xpath是定位頁面元素的方式,(“/html/body/div/div/div[2]/form/button”)是定位頁面元素的參數,

.click()是找到頁面元素后的動作------->點擊。

   那么,我們在這里考慮一下。對於通常的黑盒功能測試中,我們想在網頁上面去找一個地方,進行點擊或者輸入文字等操作的時候,

我們一般會這樣說:“用戶名輸入admin,密碼是abcd”。

但是對於測試的代碼來說,實際上有可能是:“找到頁面元素ID是UserId的元素,使用sendKeys方法,參數為admin,找到頁面元素ID是Password的元素,使用sendKeys方法,參數是abcd”。

需要解決的問題:

用戶名(我們說的)--------->找到頁面元素ID是UserId的元素(代碼),輸入admin(我們說的)--------->使用sendKeys方法,參數為admin。(代碼)

    一個頁面元素的尋找需要幾個要素,尋找的方式,尋找的參數,等待的時間。另外,為了我們說的話,代碼能夠明白,需要加上一個名字,用來告訴代碼。

    我們需要自己定義一個類,這個類就是頁面元素類。通過上面的說明,我們知道這個類中需要定義的基本變量。(定位方法,路徑,名字),另外,尋找路徑需要時間,我們再加上一個時間。

package webui.xUtils;

public class Position {
  private String path; //----->路徑
   //位置名字,就是我們通常意義上叫的名字。例如:用戶名輸入框
  private String positionName;
  private ByType type;//定位方法
  private int waitSec;//等待時間

  //selenium的基本八種定位方法。
  public enum ByType{
      xpath,id,name,className, cssSelector,tagName, partialLinkText,linkText 
  }

  public String getPath() {
    return path;
  }

  public void setPath(String path) {
    this.path = path;
  }

  public String getPositionName() {
    return positionName;
  }

  public void setPositionName(String positionName) {
    this.positionName = positionName;
  }

  public ByType getType() {
    return type;
  }

  public void setType(ByType type) {
    this.type = type;
  }

  public Position(String path, ByType type, String positionName) {
    super();
    this.path = path;
    this.positionName = positionName;
    this.type = type;
  }
  
//這種可以看作是針對iframe的情況   public Position(String path,String positionName) {     super();     this.path = path;     this.positionName = positionName;   }   public Position(String path, int waitSec, ByType type, String positionName) {     super();     this.path = path;     this.waitSec = waitSec;     this.positionName = positionName;     this.type = type;   }   public int getWaitSec() {     return waitSec;   }   public void setWaitSec(int waitSec) {     this.waitSec = waitSec;   } }

 

    使用上面的代碼,我們就定義了最初的一個Position類,這就是我們要尋找的頁面元素。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM