Appium Essentialsブックの翻訳。 第5章

こんにちは Appium Essentialsブックとモバイルオートメーションの研究の翻訳を続けています。 すでに完了しているもの:


この章では、アプリケーションの自動化に進みます。


たくさんのコードが先にあります。 行こう!



始める前に


Appiumを起動する前に、必要なソフトウェアがすべてインストールされていることを確認しましょう。

Androidの要件:


iOSの要件:


Appiumを使用する場合、必要な機能をインストールし、Android / iOSドライバーを開始する必要があります。



Androidおよび実行中のAndroidドライバーに必要な機能


目的の機能を設定するには、Appium GUIを使用する方法と、目的の機能オブジェクトを開始する方法の2つの方法があります。 目的の機能オブジェクトが優先されます。 両方のオプションを考えてみましょう。以下は、ネイティブおよびハイブリッドアプリケーション用のAppium GUIのAndroid設定です。



設定方法:


次に、Webアプリケーション用のAppium GUIのAndroid設定について:



設定方法:

  1. Androidの設定を開きます。
  2. [AVDの起動]をオンにして、リストから作成したエミュレーターを選択します[既にエミュレーターを作成していることを前提としています]。
  3. リストからPlatformVersionを選択します。
  4. [ブラウザを使用]をオンにして、リストからブラウザを選択します。
  5. デバイス名をオンにして、「Android emulator」と記述します。
  6. Appiumサーバーを起動します。

次に、DCを形成する2番目の方法について説明します。

ネイティブおよびハイブリッドアプリケーションに必要な機能


最初の章では、必要な機能とは何か、そしてそれらがなぜ必要なのかをすでに説明したので、ここですぐにコードに突入します[最後に!! 1!]。 まず、パッケージをインポートする必要があります。

 import java.io.File; import org.openqa.selenium.remote.DesiredCapabilities; import io.appium.java_client.remote.MobileCapabilityType; 

次に、目的の機能を作成します(ネイティブおよびハイブリッド用):

 DesiredCapabilities caps = new DesiredCapabilities();//  File app=new File("path of the apk");//  File,     apk caps.setCapability(MobileCapabilityType.APP,app);//,       . caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");//  Android caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");// OS caps.setCapability(MobileCapabilityType.DEVICE_NAME, "Android emulator");//,     caps.setCapability("avd","Name of the AVD to launch");//,      caps.setCapability(MobileCapabilityType.APP_PACKAGE, "package name of your app (you can get it from apk info app)");// package   caps.setCapability(MobileCapabilityType.APP_ACTIVITY, "Launch activity of your app (you can get it from apk info app)");//activity   

Webアプリケーションに必要な機能


AndroidのWebアプリケーションでは、いくつかのオプションは必要ありません。 たとえば、ブラウザを起動するため、APP、APP PACKAGE、APP ACTIVITY。

開始するには、パッケージをインポートする必要があります。

 import org.openqa.selenium.remote.DesiredCapabilities; import io.appium.java_client.remote.MobileCapabilityType; 

次に、目的の機能(Web用)を作成します。

 DesiredCapabilities caps = new DesiredCapabilities();//  caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");//  Android caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");// OS caps.setCapability(MobileCapabilityType.DEVICE_NAME, "Android emulator");//,     caps.setCapability("avd","Name of the AVD to launch");//,      caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Browser"); //   

必要な機能に関しては、すべてを行いました。 ここで、Androidドライバーを開始し、それをAppiumサーバーに接続する必要があります。

ここでも、パッケージをインポートする必要があります。

 import io.appium.java_client.android.AndroidDriver; import java.net.URL; 

次に、Androidドライバーを初期化します。

 AndroidDriver driver = new AndroidDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps); //caps    

この行は、目的の機能で設定された設定を使用して、エミュレーターでアプリケーションを起動します。

さて、これでTestNGを使用してテスト用の空白を作成できます。

 import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.remote.MobileCapabilityType; import java.io.File; import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.TimeUnit; import org.openqa.selenium.remote.DesiredCapabilities; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; public class TestAppIication { AndroidDriver driver; @BeforeClass public void setUp() throws MalformedURLException{ // desired capabilities DesiredCapabilities caps = new DesiredCapabilities(); File app=new File("path of the apk"); caps.setCapability(MobileCapabilityType.APP,app); caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4"); caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android"); caps.setCapability(MobileCapabilityType.DEVICE_NAME, "Android emulator"); caps.setCapability("avd","Name of the AVD to launch"); caps.setCapability(MobileCapabilityType.APP_PACKAGE, "package name of your app (you can get it from apk info app)"); caps.setCapability(MobileCapabilityType.APP_ACTIVITY, "Launch activity of your app (you can get it from apk info app)"); caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Browser");//    - driver = new AndroidDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps); driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS); } @Test public void testExample(){ //    } @AfterClass public void tearDown(){ driver.closeApp();//CloseApp()        ,  quit()  close() -   } } 



iOSおよび実行中のiOSドライバーに必要な機能


Androidと同様に、2つの方法で目的の機能を設定できます。

ネイティブおよびハイブリッドアプリケーションの設定:



  1. iOS設定を開く
  2. テスト対象のアプリケーションへのパスを指定します
  3. Force Deviceをオンにして、リストからシミュレーターを選択します
  4. リストからプラットフォームバージョンを選択します(または、8.1などの自分で記述できます)。
  5. Appium Serverを起動します

Webアプリケーションの設定:



  1. iOS設定を開く
  2. [モバイルSafariを使用]を選択します
  3. Force Deviceをオンにして、リストからシミュレーターを選択します
  4. リストからプラットフォームバージョンを選択します(または、8.1などの自分で記述できます)。
  5. Appium Serverを起動します

ネイティブおよびハイブリッドアプリケーションに必要な機能


DCの概要とその理由については、第1章で説明したので、すぐにコードを見てみましょう。 まず、パッケージをインポートします。

 import java.io.File; import org.openqa.selenium.remote.DesiredCapabilities; import io.appium.java_client.remote.MobileCapabilityType; 

次に、目的の機能を作成します(ネイティブおよびハイブリッド用):

 DesiredCapabilities caps = new DesiredCapabilities();//  File app=new File("path of the app");//  File,      caps.setCapability(MobileCapabilityType.APP,app);//    caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.1");// iOS caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");// OS caps.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone 5");//     Appium   

Webアプリケーションに必要な機能


パッケージのインポート:

 import java.io.File; import org.openqa.selenium.remote.DesiredCapabilities; import io.appium.java_client.remote.MobileCapabilityType; 

次に、Webアプリケーションに必要な容量をインストールします。

 DesiredCapabilities caps = new DesiredCapabilities();//  caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.1");// iOS caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");// OS caps.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone 5");//     Appium   caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Safari"); //  Safari 

iOSドライバーを初期化するために残ります。

インポート:

 import io.appium.java_client.ios.IOSDriver; import java.net.URL; 

初期化:

 IOSDriver driver = new IOSDriver (new URL("http://127.0.0.1:4723/wd/hub"),caps); 

これで、TestNGを使用してテストを作成できます。

 import io.appium.java_client.ios.IOSDriver; import io.appium.java_client.remote.MobileCapabilityType; import java.io.File; import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.TimeUnit; import org.openqa.selenium.remote.DesiredCapabilities; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; public class TestAppIication { IOSDriver driver; @BeforeClass public void setUp() throws MalformedURLException{ // desired capabilities DesiredCapabilities caps = new DesiredCapabilities(); File app=new File("path of the .app"); caps.setCapability(MobileCapabilityType.APP,app); caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.1"); caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS"); caps.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone 5"); caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Safari");//    - driver = new IOSDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps); driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS); } @Test public void testExample(){ //    } @AfterClass public void tearDown(){ driver.closeApp();//     //driver.quit(); // - } } 



ネイティブアプリケーションの自動化


Android


以下は、Android電卓の自動化の例です。 この例では、2つの数値を追加しようとしています。



  1. setup()メソッドで必要な機能を更新して、計算機を起動します。

     caps.setCapability("avd","AVD_Nexus_4");// Mention the created AVD name caps.setCapability(MobileCapabilityType.APP_PACKAGE, "com.android.calculator2"); caps.setCapability(MobileCapabilityType.APP_ACTIVITY, "com.android.calculator2.Calculator"); 

  2. 次に、2つの数字を見つける必要があります。 名前で検索します:

     WebElement five=driver.findElement(By.name("5")); WebElement four=driver.findElement(By.name("4")); 

  3. また、記号「+」と「=」を見つける必要があります。 AccessabilityIDで検索します。

     WebElement plus=driver.findElement(By.name("+")); WebElement equalTo=driver.findElementByAccessibilityId("equals")); 

  4. 次に、クリックします:

     five.click(); plus.click(); four.click(); equalTo.click(); 

  5. TestNGを使用してテストを実行します。

     public class TestAppIication { AndroidDriver driver; @BeforeClass public void setUp() throws MalformedURLException{ DesiredCapabilities caps = new DesiredCapabilities(); caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4"); caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android"); caps.setCapability(MobileCapabilityType.DEVICE_NAME, "Android emulator"); caps.setCapability("avd","AVD_Nexus_4");// Mention the created AVD name caps.setCapability(MobileCapabilityType.APP_PACKAGE, "com.android.calculator2"); caps.setCapability(MobileCapabilityType.APP_ACTIVITY, "com.android.calculator2.Calculator"); driver = new AndroidDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps); driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS); } @Test public void testExample(){ WebElement five=driver.findElement(By.name("5")); five.click(); WebElement plus=driver.findElement(By.name("+")); plus.click(); WebElement four=driver.findElement(By.name("4")); four.click(); WebElement equalTo=driver.findElementByAccessibilityId("equals")); equalTo.click(); } @AfterClass public void tearDown(){ driver.closeApp(); } } 


iOS


以下は、TestAppアプリケーションでの作業の例です。 ここからダウンロードできます 。 ダウンロードしたら、解凍します。



この例では、2つの数値を追加しようとします。

  1. TestAppを実行するためにsetup()メソッドを更新します。

     File app=new File("/Users/mhans/appium/ios/TestApp.app");//You can change it with your app address caps.setCapability(MobileCapabilityType.APP,app); 

  2. 次に、数字を入力するための要素を見つける必要があります。 名前で検索します:

     WebElement editBox1=driver.findElement(By.name("TextField1")); WebElement editBox2=driver.findElement(By.name("TextField2")); 

  3. 次に、計算ボタンを見つけます。 AccessibilityIDを使用します。

     WebElement computeSumBtn=driver.findElementByAccessibilityId("Compute Sum")); 

  4. 最初のフィールドに値を入力します。

     editBox1.sendKeys("10"); 
  5. 2番目の値を紹介します。

     editBox2.sendKeys("20"); 
  6. 次に、[合計の計算]ボタンをクリックします。

     computeSumBtn.click(); 
  7. TestNGを使用してテストを実行します。

     public class TestAppIication { IOSDriver driver; @BeforeClass public void setUp() throws MalformedURLException{ File app=new File("/Users/mhans/appium/ios/TestApp.app");//You can change it with your app address DesiredCapabilities caps = new DesiredCapabilities(); caps.setCapability(MobileCapabilityType.APP,app); caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.1"); caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS"); caps.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone 5"); driver = new IOSDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps); driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS); } @Test public void testExample(){ WebElement editBox1=driver.findElement(By.name("TextField1")); editBox1.sendKeys("10"); WebElement editBox2=driver.findElement(By.name("TextField2")); editBox2.sendKeys("20"); WebElement computeSumBtn=driver.findElementByAccessibilityId("Compute Sum")); computeSumBtn.click(); } @AfterClass public void tearDown(){ driver.closeApp(); } } 




Webアプリケーションを使用する


Android


Google検索ページを例に取ります。 ネイティブAndroidブラウザーを使用して作業します。



  1. setup()メソッドを更新して、ブラウザーを起動します。

     caps.setCapability("avd","AVD_Nexus_4"); caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Browser"); 

  2. 次に、 www.google.comにアクセスする必要があります。

     driver.get("https://www.google.com"); 

  3. searchBox要素を見つける必要があります。 名前で検索します:

     WebElement searchBox=driver.findElement(By.name("q")); 

  4. 次に、検索クエリを入力します。

     searchBox.sendKeys("Appium for mobile automation"); 

  5. TestNGを使用してテストを実行します。

     public class TestAppIication { AndroidDriver driver; @BeforeClass public void setUp() throws MalformedURLException{ DesiredCapabilities caps = new DesiredCapabilities(); caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Browser"); caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4"); caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android"); caps.setCapability(MobileCapabilityType.DEVICE_NAME, "Android emulator"); caps.setCapability("avd","AVD_Nexus_4");// Mention the created AVD name driver = new AndroidDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps); driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS); } @Test public void testExample() { driver.get("https://www.google.com"); WebElement searchBox=driver.findElement(By.name("q")); searchBox.sendKeys("Appium for mobile automation"); } @AfterClass public void tearDown(){ driver.quit(); } } 


iOS


Google検索ページを例に取ります。 作業には、ネイティブのSafariブラウザを使用します。



  1. setup()メソッドを更新して、Safariを起動します。

     caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Safari"); 

  2. www.google.comにアクセスします。

     driver.get("https://www.google.com"); 

  3. 次に、検索文字列を(名前で)検索します。

     WebElement searchBox=driver.findElement(By.name("q")); 

  4. 検索バーでリクエストを送信します。

     searchBox.sendKeys("Appium for mobile automation"); 

  5. TestNGを使用してテストを実行します。

     public class TestAppIication { IOSDriver driver; @BeforeClass public void setUp() throws MalformedURLException{ DesiredCapabilities caps = new DesiredCapabilities(); caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Safari"); caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.1"); caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS"); caps.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone 5"); driver = new IOSDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps); driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS); } @Test public void testExample(){ driver.get("https://www.google.com"); WebElement searchBox=driver.findElement(By.name("q")); searchBox.sendKeys("Appium for mobile automation"); } @AfterClass public void tearDown(){ driver.quit(); } } 




ハイブリッドオートメーション


Android


学習には、testAppを使用します。 こちらからダウンロードできます 。 ハイブリッドアプリケーションを使用する前に、 指示に従う必要があります。


  1. setup()メソッドを更新して、アプリケーションを起動します。

     File app=new File("C:\\Appium_test\\testApp.apk"); caps.setCapability(MobileCapabilityType.APP,app); caps.setCapability("avd","AVD_Nexus_4"); caps.setCapability(MobileCapabilityType.APP_PACKAGE, " com.example.testapp"); caps.setCapability(MobileCapabilityType.APP_ACTIVITY, " MainActivity"); 

  2. URL(https://www.google.com)を入力するフィールドを見つける必要があります。IDで検索します。

     WebElement editBox=driver.findElement(By.id("com.example.testapp:id/urlField")); editBox.sendKeys("https://www.google.com"); 

  3. [Go]ボタンを見つけます。

     WebElement goButton=driver.findElement(By.name("Go")); 

  4. ボタンをクリックしてください:

     goButton.click(); 

  5. 次に、コンテキストを切り替える必要があります。

     Set<String> contexts = driver.getContextHandles(); for (String context : contexts) { System.out.println(context); //    NATIVE_APP  WEBVIEW_com.example.testapp } 

  6. web_viewに切り替えます。

     driver.context("WEBVIEW_com.example.testapp"); 

    または:

     driver.context((String) contextNames.toArray()[1]); 

  7. これで、Google Webページを操作できます。 [画像]タブをクリックして、linkTextで要素を見つけることができます。

     WebElement images=driver.findElement(By.linkText("Images")); images.click(); 

  8. TestNGを使用してテストを実行します。

     public class TestAppIication { AndroidDriver driver; @BeforeClass public void setUp() throws MalformedURLException{ DesiredCapabilities caps = new DesiredCapabilities(); File app= new File("/Users/mhans/appium/ios/webViewApp. app"); caps.setCapability(MobileCapabilityType.APP,app"); caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4"); caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android"); caps.setCapability(MobileCapabilityType.DEVICE_NAME, "Android emulator"); caps.setCapability("avd","AVD_Nexus_4");// Mention the created AVD name caps.setCapability(MobileCapabilityType.AUTOMATION_NAME, "Appium");//Use Selendroid in case of <4.4 android version caps.setCapability(MobileCapabilityType.APP_PACKAGE, "com.example.testapp"); caps.setCapability(MobileCapabilityType.APP_ACTIVITY, "com.example.testapp.MainActivity"); driver = new AndroidDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps); driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS); } @Test public void testExample(){ WebElement editBox=driver.findElement(By.id("com.example.testapp:id/urlField")); editBox.sendKeys("https://www.google.com"); WebElement goButton=driver.findElement(By.name("Go")); goButton.click(); Set<String> contexts = driver.getContextHandles(); for (String context : contexts) { System.out.println(context); } driver.context((String) contexts.toArray()[1]); WebElement images=driver.findElement(By.linkText("Images")); images.click(); } @AfterClass public void tearDown(){ driver.closeApp(); } } 

iOS


ここでは、たとえばWebViewAppを取り上げます。 こちらからダウンロードできます。 ダウンロード後、アプリケーションを解凍します。



  1. setup()メソッドを更新して、アプリケーションを開始します。

     File app=new File("/Users/mhans/appium/ios/WebViewApp.app"); caps.setCapability(MobileCapabilityType.APP,app); 

  2. URL(https://www.google.com)を渡すには、検索バーを見つける必要があります。 classNameで見つけましょう:

     WebElement editBox=driver.findElement(By.className("UIATextField")); editBox.sendKeys("www.google.com"); 

  3. 次に、名前で[Go]ボタンを見つけます。

     WebElement goButton=driver.findElement(By.name("Go")); 

  4. クリック:

     goButton.click(); 

  5. 次に、コンテキストのリストを取得する必要があります。

     Set<String> contexts = driver.getContextHandles(); for (String context : contexts) { System.out.println(context); } 

  6. そしてweb_viewで動作するように切り替えます:

     driver.context("WEBVIEW_com.example.testapp"); 

    または

     driver.context((String) contextNames.toArray()[1]); 

  7. これで、Google Webページを操作できます。 [画像]タブをクリックして、linkTextで要素を見つけることができます。

     WebElement images=driver.findElement(By.linkText("Images")); images.click(); 

  8. TestNGを使用してテストを実行します。

     public class TestAppIication { IOSDriver driver; @BeforeClass public void setUp() throws MalformedURLException{ DesiredCapabilities caps = new DesiredCapabilities(); caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.1"); caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS"); caps.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone 5"); driver = new IOSDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps); driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS); } @Test public void testExample(){ WebElement editBox=driver.findElement(By.className("UIATextField")); editBox.sendKeys("https://www.google.com"); WebElement goButton=driver.findElement(By.name("Go")); goButton.click(); Set<String> contexts = driver.getContextHandles(); for (String context : contexts) { System.out.println(context); } driver.context((String) contexts.toArray()[1]); WebElement images=driver.findElement(By.linkText("Images")); images.click(); } @AfterClass public void tearDown(){ driver.closeApp(); } } 



以上です。 次の章では、実際のデバイスを操作する機能について見ていきます。

Source: https://habr.com/ru/post/J332814/


All Articles