移動測試 - Selendroid框架



Selendroid是一個用於測試Android原生和混合應用程式的測試自動化框架。Selendroid測試使用Selenium Webdriver客戶端API編寫。

Selendroid的優勢

  • 完全相容JSON Wire協議/Selenium 3就緒。

  • 無需修改被測應用即可實現自動化。

  • 使用內建的Android驅動程式webview應用測試移動網頁。

  • 自動化原生或混合應用的概念相同。

  • UI元素可以透過不同的定位器型別找到。

  • 支援手勢:高階使用者互動API。

  • 自動啟動現有模擬器。

  • Selendroid支援硬體裝置的熱插拔。

  • 作為節點完全整合到Selenium Grid中,用於擴充套件和並行測試。

  • 支援多個Android目標API(10到19)。

  • 內建檢查器,簡化測試用例開發。

  • Selendroid可以在執行時使用您自己的擴充套件進行擴充套件。

  • Selendroid可以同時與多個Android裝置(模擬器或硬體裝置)互動。

Selendroid的缺點

此工具的缺點是速度相當慢,在某些記憶體小於4GB的機器上無法使用。

如何使用Selendroid

步驟1 - 使用Robotium的先決條件是Java SDK(至少1.6)。如果您的系統上未安裝Java,請按照以下步驟操作。

  • Oracle JavaSE下載JDK和JRE

  • 接受許可協議。

  • 安裝JDK和JRE。

  • 設定環境變數,如下面的螢幕截圖所示。

Environment Variable

步驟2 - 從SDK Android下載Android Studio(由於檔案大小,這將需要一些時間)。

  • 雙擊exe檔案並執行安裝程式。
  • 繼續使用所有預設選項。
  • 設定ANDROID_HOME。

步驟3 - 從Selendroid下載Selenium jar檔案和測試應用程式

  • 下載selenium jar檔案和測試應用程式。
  • 將其放置到任何資料夾中,例如D:\SelendroidJars。

步驟4 - 使用USB線的物理裝置。

  • 確保裝置已透過USB線連線到工作站。

  • 確保已啟用USB除錯模式(在設定→開發者選項下)。

使用Selendroid測試應用程式

要使用Selendroid測試應用程式,請按照以下步驟操作:

步驟1 - 安裝Eclipse。

步驟2 - 建立一個Java專案。

步驟3 - 將下載的Selendroid jar檔案新增到新建立的專案中。

步驟4 - 將下載的Selenium jar檔案新增到新建立的專案中。

步驟5 - 在Eclipse中配置testNG。

步驟6 - 使用USB線將移動裝置連線到系統。從設定下的開發者選項中設定USB除錯模式。

步驟7 - 執行Selendroid伺服器。開啟命令提示符並編寫以下程式碼,然後按Enter鍵:

java -jar selendroid-standalone-0.17.0-with-dependencies.jar -app selendroid-test-app-0.17.0.apk

Selendroid-standalone將在埠4444上啟動一個http伺服器,並將掃描使用者建立的所有Android虛擬裝置(avd)(~/.android/avd/)。

開啟網頁瀏覽器並導航到:https://:4444/wd/hub/status

步驟8 - 建立一個Java專案;在構建路徑中新增Selendroid Standalone庫、Selenium jar和JUnit庫。

Selenium Master

步驟9 - 在Java專案下建立包。

步驟10 - 在包下建立一個類並編寫以下程式碼。

package selTest;

import io.selendroid.SelendroidDriver; 
import io.selendroid.common.SelendroidCapabilities;
import io.selendroid.standalone.SelendroidConfiguration;
import io.selendroid.standalone.SelendroidLauncher;

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 

import org.testng.Assert; 
import org.testng.annotations.AfterSuite; 
import org.testng.annotations.BeforeSuite; 
import org.testng.annotations.Test;

public class SelendroidTest {

   private WebDriver driver ;

   @BeforeSuite 
   public void setUp() throws Exception {
      SelendroidConfiguration config = new SelendroidConfiguration();
      config.addSupportedApp("selendroid-test-app-0.9.0.apk");
      SelendroidLauncher selendroidServer = new SelendroidLauncher(config);
      selendroidServer.launchSelendroid();
	  
      SelendroidCapabilities caps = new
         SelendroidCapabilities("io.selendroid.testapp:0.9.0"); 
      driver = new SelendroidDriver(caps);
   }
   
   @Test 
   public void selendroidTest() throws Exception {
      WebElement inputField = driver.findElement(By.id("my_text_field"));
      Assert.assertEquals("true", inputField.getAttribute("enabled"));
      inputField.sendKeys("Selendroid");
      
      Assert.assertEquals("Selendroid", inputField.getText());
	  
      WebElement button = driver.findElement(By.id("buttonTest"));
      button.click();
	  
      button = driver.findElement(By.id("button2"));
      button.click();
      
      Thread.sleep(5000);
	  
      button = driver.findElement(By.id("startUserRegistration"));
      button.click();
      
      Thread.sleep(10000);
	  
      WebElement element = driver.findElement(By.id("label_username")); 
      
      String text = element.getText();
      System.out.println(text);
      element = driver.findElement(By.id("inputUsername"));
      element.sendKeys("bob");
      
      element = driver.findElement(By.id("inputEmail"));
      element.sendKeys("test@gmail.com"); 
      
      element = driver.findElement(By.id("inputPassword"));
      element.clear();
      element.sendKeys("test1233");
      
      element = driver.findElement(By.id("inputName"));
      element.clear(); 
      element.sendKeys("My Name ");
	  
      element = driver.findElement(By.id("input_preferedProgrammingLanguage")); 
      element.click();
      
      element = driver.findElement(By.id("text1"));
      element.click();
	  
      element = driver.findElement(By.id("input_adds"));
      element.click();
	  
      element = driver.findElement(By.id("btnRegisterUser"));
      element.click();
      
      element = driver.findElement(By.id("buttonRegisterUser"));
      element.click(); 
   }
   
   @AfterSuite 
   public void tearDown(){ 
      driver.quit(); 
   } 
}

步驟11 - 使用testNG執行配置執行該類。

廣告
© . All rights reserved.