モバイルテスト-Selendroidフレームワーク

Selendroidは、Androidネイティブおよびハイブリッドアプリケーションをテストするためのテスト自動化フレームワークです。Selendroidテストは、SeleniumWebdriverクライアントAPIを使用して記述されています。

セレンドロイドの利点

  • JSON Wire Protocol / Selenium 3Readyと完全に互換性があります。

  • 自動化するために、テスト対象のアプリを変更する必要はありません。

  • 組み込みのAndroidドライバーwebviewアプリを使用してモバイルWebをテストします。

  • ネイティブアプリまたはハイブリッドアプリを自動化するための同じ概念。

  • UI要素は、さまざまなロケータータイプで見つけることができます。

  • ジェスチャがサポートされています:Advanced User InteractionsAPI。

  • 既存のエミュレーターは自動的に開始されます。

  • Selendroidは、ハードウェアデバイスのホットプラグをサポートしています。

  • スケーリングと並列テストのためのSeleniumグリッドへのノードとしての完全な統合。

  • 複数のAndroidターゲットAPIサポート(10から19)。

  • テストケースの開発を簡素化する組み込みのインスペクター。

  • Selendroidは、実行時に独自の拡張機能を使用して拡張できます。

  • Selendroidは、複数のAndroidデバイス(エミュレーターまたはハードウェアデバイス)と同時に対話できます。

セレンドロイドの欠点

このツールの欠点は、非常に低速であり、RAMが4GB未満の一部のマシンでは使用できないことです。

Selendroidの使用方法

Step 1− Robotiumを使用するための前提条件は、Java SDK(最小1.6)です。システムにJavaがインストールされていない場合は、以下の手順に従ってください。

  • OracleJavaSEからJDKとJREをダウンロードします

  • 使用許諾契約に同意します。

  • JDKとJREをインストールします。

  • 以下のスクリーンショットに示すように、環境変数を設定します。

Step 2− SDKAndroidからAndroidStudioをダウンロードします(ファイルのサイズが原因で時間がかかります)。

  • exeをダブルクリックして、インストーラーを実行します。
  • すべてのデフォルトオプションを続行します。
  • ANDROID_HOMEを設定します。

Step 3−SelendroidからSeleniumjarファイルとテストアプリケーションをダウンロードします

  • セレンjarファイルとテストアプリをダウンロードします。
  • D:\ SelendroidJarsなどの任意のフォルダーに配置します。

Step 4 −USBケーブルを備えた物理デバイス。

  • デバイスがUSBケーブルでワークステーションに接続されていることを確認してください。

  • USBデバッグモード(設定→開発者向けオプション)が有効になっていることを確認します。

Selendroidでアプリをテストする

Selendroidを使用してアプリをテストするには、以下の手順に従います。

Step 1 −Eclipseをインストールします。

Step 2 −Javaプロジェクトを作成します。

Step 3 −ダウンロードしたSelendroidjarファイルを新しく作成したプロジェクトに追加します。

Step 4 −ダウンロードしたSeleniumjarファイルを新しく作成したプロジェクトに追加します。

Step 5 −EclipseでtestNGを構成します。

Step 6−USBケーブルを使用してモバイルデバイスをシステムに接続します。設定の下の開発者のオプションからUSBデバッグモードを設定します。

Step 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 /)をスキャンします。

Webブラウザーを開き、次の場所に移動します。 http://localhost:4444/wd/hub/status

Step 8−Javaプロジェクトを作成します。ビルドパスにSelendroidスタンドアロンライブラリ、Selenium jar、およびJUnitライブラリを追加します。

Step 9 −Javaプロジェクトの下にパッケージを作成します。

Step 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("[email protected]"); 
      
      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(); 
   } 
}

Step 11 −testNG実行構成でクラスを実行します。