Mobile-testing-selendroid-framework
提供:Dev Guides
モバイルテスト-Selendroidフレームワーク
Selendroidは、Androidネイティブおよびハイブリッドアプリケーションをテストするためのテスト自動化フレームワークです。 Selendroidテストは、Selenium WebdriverクライアントAPIを使用して作成されます。
セレンドロイドの利点
- JSON Wire Protocol/Selenium 3 Readyと完全に互換性があります。
- テスト対象のアプリを自動化するために変更する必要はありません。
- 組み込みのAndroidドライバーWebViewアプリを使用してモバイルWebをテストします。
- ネイティブアプリまたはハイブリッドアプリを自動化するための同じコンセプト。
- UI要素はさまざまなロケータータイプで見つけることができます。
- ジェスチャーがサポートされています:Advanced User Interactions API。
- 既存のエミュレーターは自動的に開始されます。
- Selendroidは、ハードウェアデバイスのホットプラグをサポートしています。
- スケーリングと並列テストのためのSelenium Gridへのノードとしての完全統合。
- 複数のAndroidターゲットAPIのサポート(10〜19)。
- テストケースの開発を簡素化するためのインスペクターが組み込まれています。
- Selendroidは、独自の拡張機能を使用して実行時に拡張できます。
- Selendroidは、同時に複数のAndroidデバイス(エミュレーターまたはハードウェアデバイス)と対話できます。
セレンドロイドの欠点
このツールの欠点は、非常に遅く、4GB未満のRAMを搭載した一部のマシンでは使用できないことです。
Selendroidの使用方法
- ステップ1 *-Robotiumを使用するための前提条件はJava SDK(最小1.6)です。 システムにJavaがインストールされていない場合は、以下の手順に従ってください。
- Oracle JavaSEからJDKおよびJREをダウンロードします。
- ライセンス契約に同意します。
- JDKおよびJREをインストールします。
- 以下のスクリーンショットに示すように、環境変数を設定します。
- ステップ2 *-http://developer.android.com/sdk/indexl[SDK Android]からAndroid Studioをダウンロードします(ファイルのサイズのため、時間がかかります)。
- exeをダブルクリックして、インストーラーを実行します。
- すべてのデフォルトオプションで続行します。
- ANDROID_HOMEを設定します。
- ステップ3 *-http://selendroid.io/[Selendroid]からSelenium jarファイルとテストアプリケーションをダウンロードします
- セレン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/)をスキャンします。
Webブラウザーを開き、 http://localhost:4444/wd/hub/status に移動します。
- ステップ8 *-Javaプロジェクトを作成します。ビルドパスにSelendroidスタンドアロンライブラリ、Selenium jar、およびJUnitライブラリを追加します。
- ステップ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("[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();
}
}
- ステップ11 *-testNG実行構成でクラスを実行します。