
ブログ⋅docs⋅edalinghub⋅ニュースレターするまな
Appiumは、iOS、Android、およびWindowsプラットフォームでネイティブ、モバイルWeb、およびハイブリッドアプリケーションを自動化するためのツールです。 JavaまたはKotlinで書かれたObjective-CまたはSwiftおよびSwiftおよびAndroidネイティブアプリで書かれたiOSネイティブアプリをサポートしています。また、モバイルブラウザーを使用してアクセスされるモバイルWebアプリもサポートしています(AppiumはiOSとChromeのSafari、またはAndroidに組み込みの「ブラウザ」アプリをサポートしています)。 LambdatestのオンラインクラウドでAppium Automationテストを実行します。
ヒント: .apkまたは.ipaファイルがない場合、サンプルを使用してLambdatestでサンプルテストを実行できますか? Androidアプリまたはサンプル? iOSアプリ。
Lambdatest Real DeviceクラウドプラットフォームでAppium Automationテストを実行するためにLambdatestによってサポートされている言語とフレームワークのリストを以下に示します。
| Java | Php | ルビー | C# | Python | JavaScript |
|---|---|---|---|---|---|
| ジュニット | Php | キュウリ | C# | 振る舞う | WebDriverio |
| ロボット |
Appiumと互換性のあるすべての言語とフレームワークをサポートしているため、お気に入りがテーブルにない場合に備えて。心配しないでください、あなたはまだテストを実行することができます。どんな助けについてもお問い合わせください。
注:より多くのフレームワークのためのドキュメントを準備しています。お好みのフレームワークのドキュメントに優先順位を付けてほしい場合は、お気軽にお問い合わせください。
iOSアプリケーション(.ipaファイル)またはAndroidアプリケーション(.apkファイル)をREST APIを使用してLambDatestサーバーにアップロードします。ユーザー名とAccessKeyをフォーマットのUsername:AccessKeyのCURLコマンドの認証のために提供する必要があります。 CurlリクエストにAppFileのパスを必ず追加してください。 REST APIを使用してアプリをアップロードするためのCURLリクエストの例を示します。
macos/linuxの場合:
curl - u "{username}:{accesskey}"
-- location -- request POST 'https: //manual-api.lambdatest.com/app/upload/realDevice'
-- form 'name="Android_App"'
-- form 'appFile=@"/Users/{desktop_username}/Desktop/LT_Java_Appium/proverbial_android.apk"'Windowsの場合:
curl - u "{username}:{accesskey}" - X POST "https://manual-api.lambdatest.com/app/upload/realDevice" - F "appFile=@" / Users / Desktop_username / Desktop / LT_Java_Appium / proverbial_android . apk ""アプリURLの使用:
macos/linuxの場合:
curl - u "${ YOUR_LAMBDATEST_USERNAME()}:${ YOUR_LAMBDATEST_ACCESS_KEY()}"
-- location -- request POST 'https: //manual-api.lambdatest.com/app/upload/realDevice'
-- form 'name="Android_App"'
-- form 'url="https://prod-mobile-artefacts.lambdatest.com/assets/docs/proverbial_android.apk"'Windowsの場合:
curl - u "${ YOUR_LAMBDATEST_USERNAME()}:${ YOUR_LAMBDATEST_ACCESS_KEY()}"
- X POST "https://manual-api.lambdatest.com/app/upload/realDevice"
- d "{"url":"https://prod-mobile-artefacts.lambdatest.com/assets/docs/proverbial_android.apk",
"name":"sample.apk"'情報ノート:
上記のカールの応答は、フォーマットのApp URLを含むJSONオブジェクトであり、lt:// app123456789123456789であり、次のステップで使用されます。
上記でダウンロードしたサンプルアプリのJavaのサンプル自動化スクリプトを次に示します。以下のコードでapp_url 、 username 、 accesskeyを更新してください。
import io . appium . java_client . AppiumDriver ;
import io . appium . java_client . MobileBy ;
import io . appium . java_client . MobileElement ;
import io . appium . java_client . android . AndroidElement ;
import org . openqa . selenium . remote . DesiredCapabilities ;
import org . openqa . selenium . support . ui . ExpectedConditions ;
import org . openqa . selenium . support . ui . WebDriverWait ;
import java . net . URL ;
import java . util . List ;
public class AndroidApp {
public static String userName = "username" ; //Enter your LT Username here
public static String accessKey = "accesskey" ; //Enter your LT AccessKey here
public String gridURL = "@mobile-hub.lambdatest.com/wd/hub" ;
String DeviceValue ;
String versionValue ;
String PlatformValue ;
@ org . testng . annotations . Parameters ( value = { "device" , "version" , "platform" })
public AndroidApp ( String device , String version , String platform ) {
try {
DeviceValue = device ;
versionValue = version ;
PlatformValue = platform ;
DesiredCapabilities capabilities = new DesiredCapabilities ();
capabilities . setCapability ( "build" , "ParallelSample Android" );
capabilities . setCapability ( "name" , platform + " " + device + " " + version );
capabilities . setCapability ( "deviceName" , device );
capabilities . setCapability ( "platformVersion" , version );
capabilities . setCapability ( "platformName" , platform );
capabilities . setCapability ( "isRealMobile" , true );
//AppURL (Create from Wikipedia.apk sample in project)
capabilities . setCapability ( "app" , "app url" ); //Enter your app URL from previous step here
capabilities . setCapability ( "deviceOrientation" , "PORTRAIT" );
capabilities . setCapability ( "console" , true );
capabilities . setCapability ( "network" , true );
capabilities . setCapability ( "visual" , true );
capabilities . setCapability ( "devicelog" , true );
String hub = "https://" + userName + ":" + accessKey + gridURL ;
AppiumDriver driver = new AppiumDriver ( new URL ( hub ), capabilities );
MobileElement color = ( MobileElement ) driver . findElementById ( "com.lambdatest.proverbial:id/color" );
//Changes color
color . click ();
//Back to black color
color . click ();
MobileElement text = ( MobileElement ) driver . findElementById ( "com.lambdatest.proverbial:id/Text" );
//Changes the text to proverbial
text . click ();
//toast is visible
MobileElement toast = ( MobileElement ) driver . findElementById ( "com.lambdatest.proverbial:id/toast" );
toast . click ();
//notification is visible
MobileElement notification = ( MobileElement ) driver . findElementById ( "com.lambdatest.proverbial:id/notification" );
notification . click ();
//Open the geolocation page
MobileElement geo = ( MobileElement ) driver . findElementById ( "com.lambdatest.proverbial:id/geoLocation" );
geo . click ();
Thread . sleep ( 5000 );
//takes back to home page
MobileElement home = ( MobileElement ) driver . findElementByAccessibilityId ( "Home" );
home . click ();
//Takes to speed test page
MobileElement speedtest = ( MobileElement ) driver . findElementById ( "com.lambdatest.proverbial:id/speedTest" );
speedtest . click ();
Thread . sleep ( 5000 );
MobileElement el10 = ( MobileElement ) driver . findElementByXPath ( "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.view.ViewGroup/android.widget.RelativeLayout/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.RelativeLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View/android.view.View[1]/android.view.View[3]/android.view.View[1]/android.view.View/android.widget.Button" );
el10 . click ();
Thread . sleep ( 25000 );
MobileElement el11 = ( MobileElement ) driver . findElementByXPath ( "//android.widget.FrameLayout[@content-desc= " Home " ]/android.widget.FrameLayout/android.widget.ImageView" );
el11 . click ();
//Opens the browser
MobileElement browser = ( MobileElement ) driver . findElementByAccessibilityId ( "Browser" );
browser . click ();
MobileElement el13 = ( MobileElement ) driver . findElementById ( "com.lambdatest.proverbial:id/url" );
el13 . sendKeys ( "www.lambdatest.com" );
MobileElement el14 = ( MobileElement ) driver . findElementById ( "com.lambdatest.proverbial:id/find" );
el14 . click ();
driver . quit ();
} catch ( Exception t ) {
System . out . println ();
}
}
} import io . appium . java_client . AppiumDriver ;
import io . appium . java_client . MobileElement ;
import org . openqa . selenium . JavascriptExecutor ;
import org . openqa . selenium . remote . DesiredCapabilities ;
import java . net . URL ;
public class iOSApp {
public static String userName = "username" ; //Enter your LT Username here
public static String accessKey = "accesskey" ; //Enter your LT AccessKey here
public String gridURL = "@mobile-hub.lambdatest.com/wd/hub" ;
String DeviceValue ;
String versionValue ;
String PlatformValue ;
AppiumDriver driver ;
@ org . testng . annotations . Parameters ( value = { "device" , "version" , "platform" })
public iOSApp ( String device , String version , String platform ) {
try {
DeviceValue = device ;
versionValue = version ;
PlatformValue = platform ;
DesiredCapabilities capabilities = new DesiredCapabilities ();
capabilities . setCapability ( "build" , "ParallelSample iOS" );
capabilities . setCapability ( "name" , platform + " " + device + " " + version );
capabilities . setCapability ( "deviceName" , device );
capabilities . setCapability ( "platformVersion" , version );
capabilities . setCapability ( "platformName" , platform );
capabilities . setCapability ( "isRealMobile" , true );
//AppURL (Create from proverbial.ipa sample in project)
capabilities . setCapability ( "app" , "app url" ); //Enter your app URL from previous step here
capabilities . setCapability ( "deviceOrientation" , "PORTRAIT" );
capabilities . setCapability ( "console" , true );
capabilities . setCapability ( "network" , true );
capabilities . setCapability ( "visual" , true );
capabilities . setCapability ( "devicelog" , true );
//capabilities.setCapability("geoLocation", "HK");
String hub = "https://" + userName + ":" + accessKey + gridURL ;
driver = new AppiumDriver ( new URL ( hub ), capabilities );
MobileElement color = ( MobileElement ) driver . findElementByAccessibilityId ( "Colour" );
//Changes color
color . click ();
//Back to black color
color . click ();
MobileElement text = ( MobileElement ) driver . findElementByAccessibilityId ( "Text" );
//Changes the text to proverbial
text . click ();
//toast is visible
MobileElement toast = ( MobileElement ) driver . findElementByAccessibilityId ( "Toast" );
toast . click ();
//notification is visible
MobileElement notification = ( MobileElement ) driver . findElementByAccessibilityId ( "Notification" );
notification . click ();
//Open the geolocation page
MobileElement geo = ( MobileElement ) driver . findElementByAccessibilityId ( "GeoLocation" );
geo . click ();
Thread . sleep ( 5000 );
//Takes back
driver . navigate (). back ();
//Takes to speed test page
MobileElement speedtest = ( MobileElement ) driver . findElementByAccessibilityId ( "Speed Test" );
speedtest . click ();
Thread . sleep ( 5000 );
MobileElement el10 = ( MobileElement ) driver . findElementByAccessibilityId ( "start speed test - connection type multi" );
el10 . click ();
Thread . sleep ( 25000 );
driver . navigate (). back ();
//Opens the browser
MobileElement browser = ( MobileElement ) driver . findElementByAccessibilityId ( "Browser" );
browser . click ();
Thread . sleep ( 3000 );
MobileElement el4 = ( MobileElement ) driver . findElementByAccessibilityId ( "Search" );
el4 . click ();
el4 . sendKeys ( "Lambdatest" );
(( JavascriptExecutor ) driver ). executeScript ( "lambda-status=passed" );
driver . quit ();
} catch ( Exception t ) {
System . out . println ();
(( JavascriptExecutor ) driver ). executeScript ( "lambda-status=failed" );
driver . quit ();
}
}
}.XMLファイルを作成します。以下のサンプルコードを同じように見つけてください。 <? xml version = " 1.0 " encoding = " UTF-8 " ?>
<! DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
< suite thread-count = " 100 " name = " Mobile " parallel = " tests " >
< test name = " AppTest 1 " >
< parameter name = " version " value = " 11 " />
< parameter name = " platform " value = " Android " />
< parameter name = " device " value = " Galaxy S21 Ultra 5G " />
< classes >
< class name = " AndroidApp " />
</ classes >
</ test >
< test name = " AppTest 2 " >
< parameter name = " version " value = " 11 " />
< parameter name = " platform " value = " Android " />
< parameter name = " device " value = " Galaxy S21 " />
< classes >
< class name = " AndroidApp " />
</ classes >
</ test >
</ suite ><? xml version = " 1.0 " encoding = " UTF-8 " ?>
<! DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
< suite thread-count = " 100 " name = " Mobile " parallel = " tests " >
< test name = " iOSApp 1 " >
< parameter name = " version " value = " 14 " />
< parameter name = " platform " value = " iOS " />
< parameter name = " device " value = " iPhone 11 " />
< classes >
< class name = " iOSApp " />
</ classes >
</ test >
< test name = " iOSApp 2 " >
< parameter name = " version " value = " 14 " />
< parameter name = " platform " value = " iOS " />
< parameter name = " device " value = " iPhone 12 Pro " />
< classes >
< class name = " iOSApp " />
</ classes >
</ test >
</ suite >デバッグしてコードを実行します。編集者でiOSApp.javaまたはAndroidApp.javaを実行します。
テストを実行したら、ログとともにテスト実行を表示できます。テストケースが合格または失敗するのを見ることができます。 Lambdatest Automationで同じものを見ることができます。
AndroidとiOSの両方のサンプル機能を以下に示します -
{
"deviceName" : "Galaxy Tab S4" ,
"platformName" : "android" ,
"platformVersion" : "10" ,
"app" : "App_url" ,
"visual" : True ,
"console" : True ,
"deviceOrientation" : "PORTRAIT" ,
"build" : "new-12" ,
"isRealMobile" : True ,
} {
"deviceName": "iPhone 12 Mini",
"platformName": "ios",
"platformVersion": "14",
"app": "App_url",
"isRealMobile": True,
"visual": True,
"console": True,
"build": "lt-web-4",
"network": True,
}
注:必須フィールドにはアスタリスクがマークされています *
| 鍵 | 値 | 機能の説明 |
|---|---|---|
| *ユーザー | タイプ:文字列 | あなたのltユーザー名。 |
| *AccessKey | タイプ:文字列 | LTアクセスキー。 |
| 建てる | タイプ:文字列 デフォルト:無題 build=iOS Small Run | 複数のテストを含むジョブのように、テストをグループ化できます。 |
| 名前 | タイプ:文字列 デフォルト:テストのテスト。名前が渡されない場合。 name=iphone 6 Small Run | テストの名前。 |
| プロジェクト | 「プロジェクト」が能力が渡されない場合に備えて、空白のままになります。project=Small Run | 複数のジョブを含むプロジェクトのようにビルドをグループ化できます。 |
| *Devicename | タイプ:文字列iPhone 13 | デバイスの名前。 |
| *PlatformName | タイプ:文字列ios | OSの名前。 |
| *プラットフォームバージョン | タイプ:文字列14 | OSバージョン。 |
| *アプリ | タイプ:文字列app=lt://APP100201061631704657918380 | lambdatestサーバーにアプリをアップロードした後に返されたアプリURLを受け入れます。 |
| queuetimeout | タイプ:文字列 デフォルト:600 queueTimeout=300 | この機能を使用して、範囲内のキュータイムアウト値を変更できます。 Queuetimeout範囲:300-900。 |
| idletimeout | タイプ:文字列 デフォルト:120 idleTimeout=120 | この機能を使用して、タイムアウト値を変更できます。 |
| ビジュアル | タイプ:Boolean デフォルト:false visual=TRUEまたは visual=FALSE | コマンドによるコマンドスクリーンショットは、各テストステップで記録されます。デフォルトでは、フラグはオフとして設定されます。注:テスト実行時間は、「True」と設定されていれば増加します。 |
| ビデオ | タイプ:Boolean デフォルト:true video=TRUEまたは video=FALSE | 完全な画面のビデオ録画。 |
| DeviceLog | タイプ:Boolean デフォルト:true devicelog=TRUEまたは devicelog=FALSE | デバイスログを有効にします。 |
| ネットワーク | タイプ:Boolean デフォルト:true network=TRUEまたは network=FALSE | ネットワークログを有効にします。 |
| deviceorientation | タイプ:文字列deviceOrientation=portraitまたは deviceOrientation=landscape | デバイスの画面の向きを変更します。 |
| トンネル | タイプ:Booleantunnel=TRUEまたは tunnel=FALSE | lambdatestでローカルアプリケーションをテストします。 |
| TunnelName | タイプ:BooleantunnelName=RabbitHole | トンネルの名前。 |
| 専用プロキシ | タイプ:BooleandedicatedProxy=TRUEまたは dedicatedProxy=FALSE | 専用のプロキシ。 |
| AutoGrantPermissions | タイプ:BooleanautoGrantPermissions=TRUEまたは autoGrantPermissions=FALSE | Appiumに、アプリに必要な権限を自動的に決定し、インストール時にアプリに付与します。デフォルトはfalseになります。 noresetが本当なら、この機能は機能しません。 |
| autodismissalerts | タイプ:BooleanautoDismissAlerts=TRUEまたは autoDismissAlerts=FALSE | [iOSのみ] iOSデバイスでアラート/ポップアップを却下するアピウム機能。 |
| AutoacceptAlerts | タイプ:BooleanautoAcceptAlerts=TRUEまたは autoAcceptAlerts=FALSE | [iOSのみ] iOSデバイスでアラート/ポップアップを受け入れるアピウム機能。 |
| NewCommandTimeout | タイプ:文字列60 | クライアムがセッションを終了して終了すると仮定する前に、Appiumがクライアントからの新しいコマンドを待つ時間(秒単位)。 |
| 言語 | タイプ:文字列fr | iOS(xcuitestドライバーのみ)およびAndroidに設定する言語。 |
| ロケール | タイプ:文字列fr_CA, CA | iOS(xcuitestドライバーのみ)およびAndroidに設定するロケール。 iOS用のFR_CA形式。 AndroidのCA形式(国名の略語)。 |
| noreset | タイプ:Booleantrue | このセッションの前にアプリの状態をリセットしないでください。詳細については、こちらをご覧ください。 |
| AutomationName | タイプ:Boolean デフォルト:Appium automationName = Appium | 使用するオートメーションエンジン。注:アプリオートメーションコードでfalseとして設定するため、変更できません。 Appium(デフォルト)、またはuiautomator2、エスプレッソ、またはuiautomator1 android用のuiautomator1、またはiOSのxcuitestまたは機器、またはyouiengineで構築されたアプリケーション用のyouiengine。 |
| eventtimings | タイプ:Boolean デフォルト:false true | さまざまなアピウム内部イベント(たとえば、各コマンドの開始と終了など)のタイミングの報告を有効または無効にします。有効にするには、trueを使用します。その後、タイミングは、現在のセッションを照会するための応答に関するイベントプロパティとして報告されます。この応答の構造については、イベントタイミングドキュメントを参照してください。 |
| ジオロケーション | タイプ:文字列fr | 世界中の複数の国でホストされているIPアドレスを選択することにより、さまざまな場所からのモバイル動作をシミュレートできます。 |
| その他のアプリ | タイプ:文字列の配列 デフォルト:[]または空の配列 "otherApps":["lt://APP1002211081648217405891389","lt://APP1002211081648217429465823"] | 「lambdatestサーバーにアプリをアップロードした後、返されたアプリURLのリストを受け入れます。 満足すべき条件: 1。「その他のアプリ」が渡される場合は、アプリも渡す必要があります。 2。アプリURLの長さ 配列<= 3。 3.最大3では、他のアプリをインストールできます。 4.アプリは「その他のAPP」アレイ内に存在しないでください。 5.「その他のAPP」アレイに複製されていません。」 |
質問がありますか? 24時間365日のチャットサポートに連絡してください。または、[email protected]にメールを送信することもできます。
lambdatestトンネルを使用して、Lambdatest Appium Test Automationプラットフォームで、さまざまな実際のAndroidおよびiOSデバイスでローカルおよび非公開のアプリをテストできます。 LambDatest Tunnelは、Webソケット、HTTPS、SSH(セキュアシェル)などのプロトコルを使用して、ローカルシステムとLambDatestクラウドサーバーの間に安全でユニークなトンネル接続を構築できるようにします。
このドキュメントでは、モバイルアプリの自動化を実行しながら、ローカルまたはプライベートホストのアプリをテストするようにLambDatestトンネルを構成する方法を学びます。
ローカルでアプリをテストするには、構成する必要があります。
lambdatestトンネルとの接続。
Lambdatestトンネルを介して実行するスクリプトをテストします。
以下に示すのは、lambdatestトンネルとの接続を構成する手順です。
ダウンロードしたバイナリファイルを抽出します。
コマンドプロンプトに移動し、バイナリファイルを抽出したディレクトリ/フォルダーを指します。
端末で以下のコマンドを実行します。
. / LT -- user { user 's login email} --key {user' s access key } -- tunnelName { user 's tunnel name}lambdatestトンネルとの接続を構成した後、能力tunnel Trueに設定する必要があります。
| 鍵 | 値 | 説明 | 望ましい機能 |
|---|---|---|---|
| トンネル | true/false | トンネルを構成します | "tunnel" : True, |
Lambdatest機能ジェネレーターを使用してtunnel機能を追加することもできます。
ご質問がある場合や追加情報が必要な場合は、 24時間365日のチャットサポートにドロップするか、[email protected]に直接メールで送信してください。
モバイルアプリなどのGUI検査官は、(個別にインストールされている) Appiumサーバーを搭載しています。 Appium Inspectorは、ユーザーインターフェイスを備えたAppiumクライアント(Webdriverio、AppiumのJavaクライアント、AppiumのPythonクライアントなど)です。インターフェイスを使用して、Appium Serverバージョンを指定し、機能を設定できます。 Appium Serverがアプリで稼働していると、要素と対話して他のAppiumコマンドを実行できます。
このトピックの終わりまでに、あなたはできるようになります:
iOSアプリケーション(.ipaファイル)またはAndroidアプリケーション(.apkファイル)をREST APIを使用してLambDatestサーバーにアップロードします。ユーザー名とAccessKeyをフォーマットのUsername:AccessKeyのCURLコマンドの認証のために提供する必要があります。 CurlリクエストにAppFileのパスを必ず追加してください。 REST APIを使用してアプリをアップロードするためのCURLリクエストの例を示します。
アプリファイルの使用:
iOSの場合:
curl - u "{usename}:{accesskey}"
-- location -- request POST 'https: //manual-api.lambdatest.com/app/upload/realDevice'
-- form 'name="Android_App"'
-- form 'url="https://prod-mobile-artefacts.lambdatest.com/assets/docs/proverbial_android.apk"'Windowsの場合:
curl - u "YOUR_LAMBDATEST_USERNAME:YOUR_LAMBDATEST_ACCESS_KEY" - X POST "https://manual-api.lambdatest.com/app/upload/realDevice" - F "appFile=@" / Users / macuser / Downloads / proverbial_android . apk "'アプリURLの使用:
macos/linuxの場合:
curl - u "YOUR_LAMBDATEST_USERNAME:YOUR_LAMBDATEST_ACCESS_KEY"
-- location -- request POST 'https: //manual-api.lambdatest.com/app/upload/realDevice'
-- form 'name="Android_App"'
-- form 'url="https://prod-mobile-artefacts.lambdatest.com/assets/docs/proverbial_android.apk"'Windowsの場合:
curl - u "YOUR_LAMBDATEST_USERNAME:YOUR_LAMBDATEST_ACCESS_KEY" - X POST "https://manual-api.lambdatest.com/app/upload/realDevice" - d "url":"https://prod-mobile-artefacts.lambdatest.com/assets/docs/proverbial_android.apk","name":"sample.apk"'ヒント:
App URLを含むJSONオブジェクトであり、lt:// app123456789123456789であり、次のステップで使用されます。Appium Inspectorを起動し、クラウドテストプロバイダーのリストからLambDatestを選択します。
ユーザー名とアクセスキーを入力します。 Lambdatestダッシュボードで利用可能な資格情報を見つけることができます
Appium Inspectorの[目的の機能]タブでLambDatest機能を構成します。ステップ1で取得した一意のアプリURLを使用して、アプリ機能値を設定します。 lambdatestがサポートするすべての機能のリストはこちらから入手できます
または、機能ジェネレーターに移動して、GUIを使用して機能表現を生成することもできます。

これが完了したら、開始セッションをクリックしてテストを実行できます。セッションを開始すると、テスト実行の詳細情報とログとともにビデオ録画がlambdatestダッシュボードで利用可能になります。

質問がありますか?
24時間365日のチャットサポートに連絡してください。または、[email protected]にメールを送信することもできます。
このドキュメントでは、モバイルアプリテストワークフローを最適化するのに役立つAPIをいくつか見ていきます。ライブまたは自動化されたアプリテストを実行している場合は、これらのAPIを使用してアプリを取得して削除できます。
アップロードされたアプリのリストをアプリIDとともに取得するには、以下のCurlコマンドを実行します。
curl -- location -- request GET 'https://YOUR_LAMBDATEST_USERNAME:[email protected]/app/data?type=ios&level=user'以下に示すのは、上記のカールリクエストへの応答です。
{ "metaData" : { "type" : "ios" , "total" : 1 } ,
"data" : [ {
"app_id" : "APP100245789181570497850" ,
"name" : "proverbial_ios.ipa" ,
"type" : "ios" ,
"updated_at" : "2022-05-10T11:19:30.000Z" ,
"shared" : false ,
"source" : "web-client"
} ] アップロードされたアプリを削除するには、以下のCurlコマンドを実行します。
curl -- location -- request DELETE 'https: //YOUR_LAMBDATEST_USERNAME:[email protected]/app/delete'
-- header 'Content-Type: application/json'
-- data - raw ' {
"appIds" : "APPID1,APPID2"
} '以下に示すのは、上記のカールリクエストへの応答です。
{ "message" : "Deleted successfully." }それだけです!質問がある場合や追加情報が必要な場合は、 24時間365日のチャットサポートに連絡するか、[email protected]に直接メールで送信できます。
LambDatestは、アプリオートメーションを実行するためのオンラインAppium Automationグリッドを提供しています。オンラインAppiumグリッドは、ローカルグリッド、Browserstack、Saucelabs、Lambdatestで利用できます。したがって、ローカルグリッド、ソースラボ、またはブラウスタークからラムダテストに現在のAppium Appium Automationスクリプト(またはスイート)を簡単に移行できます。
このドキュメントでは、アプリの自動化にlambdatestクラウドを活用し、地元のグリッド、ソースラボ、またはブラウストックからテストスクリプト(またはテストスイート)を移行する方法について説明します。 Lambdatestの目的の機能をテストで使用し、テストセッションを認証し、クラウドでテストを実行できます。
現在のローカルグリッド、Browesestack、またはSauce LabsのテストをLambdatestに移行するには、コードにいくつかの調整が必要です。このガイドでは、テストでLambdatestの希望する機能を活用し、テストセッションを認証し、クラウドブラウザーでテストを実行する方法について説明します。
ローカルグリッド、Browesestack、またはSauce LabsからLambdatestに移動するには、認証、望ましい機能などのテストスイートにいくつかの変更を加える必要があります。
まず、テストスイートの構成設定で認証を変更する必要があります。 Lambdatest Appiumグリッドでテストを実行するには、クラウドグリッドでテストを実行するには、有効なuser_nameおよびaccess_keyが必要です。 lambdatestにアカウントがない場合は、lambdatestサインアップページにアクセスして新しいアカウントを作成します。
以下は、パラメーターの変更です。
Automation DashboardのLambDatestプロファイルセクションにUsernameとAccess Keyを見つけることができます。

BrowserstackまたはSaucelabsからLambdatestに移行する場合、既存のコードで次の変更を行う必要があります。
上記で強調した各フィールドの並んで比較してください。
| 財産 | タイプ | browserstack | ソーセラブ | lambdatest |
|---|---|---|---|---|
| ユーザー名 | 弦 | BROWSERSTACKでAppiumグリッドにアクセスするためのユーザー名 | ソースラボでAppiumグリッドにアクセスするためのユーザー名 | lambdatestでAppiumグリッドにアクセスするユーザー名 |
| AccessKey | 弦 | BROWSERSTACKでAppiumグリッドにアクセスするAccessKey | ソースラボでAppiumグリッドにアクセスするアクセスキー | AccessKey LambdatestでAppiumグリッドにアクセスします |
| ハブURL | 弦 | @hub-cloud.browserstack.com/wd/hub | ondemand.us-west-1.saucelabs.com/wd/hub | @hub.lambdatest.com/wd/hub |
Pythonベースの実装の場合、認証プロセスのスクリプトの変更を次に示します。
browserstack
userName = "BrowserStack_UserName"
accessKey = "BrowserStack_AccessKey"ソーセラブ
userName = "SAUCE_USERNAME"
accessKey = "SAUCE_ACCESS_KEY"lambdatest
userName = "LambdaTest_UserName"
accessKey = "LambdaTest_AccessKey"これで、テストスイートの構成設定でハブURLを変更する必要があります。ハブURLは文字列タイプであり、アピウムテストが実行するためにルーティングされるハブの場所を指定します。
Pythonベースの実装の場合、ハブURLのスクリプトの変更を次に示します。
browserstack
@hub-cloud.browserstack.com/wd/hub
ソーセラブ
@ondemand.us-west-1.saucelabs.com/wd/hub
lambdatest
@mobile-hub.lambdatest.com/wd/hub
機能ジェネレーターを使用すると、以下を指定できる構成オプションである目的の機能(または機能)を指定できます。
Lambdatest機能ジェネレーターで利用可能な他の高度なオプションを選択することもできます。
移行のために、JavaベースのAppiumテストを受けました。以下は、BrowserstackとLambdatestの機能ジェネレーターのスクリーンショットです。



BrowserstackおよびLambdatest機能ジェネレーターによって生成された機能の比較:
| 機能 | browserstack | ソーセラブ | lambdatest |
|---|---|---|---|
| デバイス | デバイス | Devicename | Devicename |
| オペレーティング·システム | OS_Version | プラットフォームバージョン | プラットフォームバージョン |
以下は、Java言語の目的の機能の比較の概要です。
browserstack
//demo.java
DesiredCapabilities capabilities = new DesiredCapabilities ( ) ;
capabilities . setCapability ( "os_version" , "9.0" ) ;
capabilities . setCapability ( "device" , "Google Pixel 3" ) ;
capabilities . setCapability ( "browserstack.appium_version" , "1.21.0" ) ;ソーセラブ
//demo.java
MutableCapabilities caps = new MutableCapabilities ();
caps . setCapability ( "platformName" , "Android" );
caps . setCapability ( "browserName" , "Chrome" );
caps . setCapability ( "appium:deviceName" , "Google Pixel 3 GoogleAPI Emulator" );
caps . setCapability ( "appium:platformVersion" , "12.0" );
MutableCapabilities sauceOptions = new MutableCapabilities ();
sauceOptions . setCapability ( "appiumVersion" , "1.21.0" );
caps . setCapability ( "sauce:options" , sauceOptions );lambdatest
//demo.java
DesiredCapabilities capabilities = new DesiredCapabilities ( ) ;
capabilities . setCapability ( "build" , "your build name" ) ;
capabilities . setCapability ( "name" , "your test name" ) ;
capabilities . setCapability ( "platformName" , "Android" ) ;
capabilities . setCapability ( "deviceName" , "Google Pixel 3" ) ;
capabilities . setCapability ( "isRealMobile" , true ) ;
capabilities . setCapability ( "platformVersion" , "9" ) ;移行プロセス全体を示す例を見てみましょう。テストシナリオは、「lambdatest」という用語を検索するウィキペディアアプリを開くことです。次のテストは、Google Pixel 3を実行しているAndroid 11で実行されます。
from appium import webdriver
from appium . webdriver . common . mobileby import MobileBy
from selenium . webdriver . support . ui import WebDriverWait
from selenium . webdriver . support import expected_conditions as EC
import time
userName = "BrowserStack_UserName"
accessKey = "BrowserStack_AccessKey"
desired_caps = {
"build" : "Python Android" ,
"device" : "Google Pixel 3" ,
"app" : "<app_url>"
}
driver = webdriver . Remote ( "https://" + userName + ":" + accessKey + "@hub-cloud.browserstack.com/wd/hub" , desired_caps )
search_element = WebDriverWait ( driver , 30 ). until (
EC . element_to_be_clickable (( MobileBy . ACCESSIBILITY_ID , "Search Wikipedia" ))
)
search_element . click ()
search_input = WebDriverWait ( driver , 30 ). until (
EC . element_to_be_clickable (( MobileBy . ID , "org.wikipedia.alpha:id/search_src_text" ))
)
search_input . send_keys ( "BrowserStack" )
time . sleep ( 5 )
search_results = driver . find_elements_by_class_name ( "android.widget.TextView" )
assert ( len ( search_results ) > 0 )
driver . quit () #samplewikipedia.py
import ssl
try :
_create_unverified_https_context = ssl . _create_unverified_context
except AttributeError :
# Legacy Python that doesn't verify HTTPS certificates by default
pass
else :
# Handle target environment that doesn't support HTTPS verification
ssl . _create_default_https_context = _create_unverified_https_context
from threading import Thread
import time
from selenium import webdriver
from selenium . webdriver . common . keys import Keys
from selenium . webdriver . common . desired_capabilities import DesiredCapabilities
from selenium . common . exceptions import TimeoutException
from selenium . webdriver . support . ui import WebDriverWait
from selenium . webdriver . support import expected_conditions as EC
from appium . webdriver . common . mobileby import MobileBy
from appium import webdriver
# This array 'caps' defines the capabilities browser, device and OS combinations where the test will run
caps = {
caps [ 'platformName' ] = 'Android'
caps [ 'browserName' ] = 'Chrome'
caps [ 'appium:deviceName' ] = 'Google Pixel 3a GoogleAPI Emulator'
caps [ 'appium:platformVersion' ] = '11.0'
caps [ 'sauce:options' ] = {}
caps [ 'sauce:options' ][ 'appiumVersion' ] = '1.20.2'
}
# run_session function searches for 'saucelabs' on google.com
def run_session ( desired_cap ):
driver = webdriver . Remote (
command_executor = "https://SAUCE_USERNAME:[email protected]/wd/hub" ,
desired_capabilities = desired_cap )
# driver.get("https://www.ifconfig.me")
# time.sleep(10)
# Test case for the saucelabs sample Android app.
# If you have uploaded your app, update the test case here.
search_element = WebDriverWait ( driver , 30 ). until (
EC . element_to_be_clickable (
( MobileBy . ACCESSIBILITY_ID , "Search Wikipedia" ))
)
search_element . click ()
search_input = WebDriverWait ( driver , 30 ). until (
EC . element_to_be_clickable (
( MobileBy . ID , "org.wikipedia.alpha:id/search_src_text" ))
)
search_input . send_keys ( "saucelabs" )
time . sleep ( 5 )
search_results = driver . find_elements_by_class_name (
"android.widget.TextView" )
assert ( len ( search_results ) > 0 )
# Invoke driver.quit() after the test is done to indicate that the test is completed.
driver . quit ()
# The Thread function takes run_session function and each set of capability from the caps array as an argument to run each session in parallel
for cap in caps :
Thread ( target = run_session , args = ( cap ,)). start () #samplewikipedia.py
import ssl
try :
_create_unverified_https_context = ssl . _create_unverified_context
except AttributeError :
# Legacy Python that doesn't verify HTTPS certificates by default
pass
else :
# Handle target environment that doesn't support HTTPS verification
ssl . _create_default_https_context = _create_unverified_https_context
from threading import Thread
import time
from selenium import webdriver
from selenium . webdriver . common . keys import Keys
from selenium . webdriver . common . desired_capabilities import DesiredCapabilities
from selenium . common . exceptions import TimeoutException
from selenium . webdriver . support . ui import WebDriverWait
from selenium . webdriver . support import expected_conditions as EC
from appium . webdriver . common . mobileby import MobileBy
from appium import webdriver
# This array 'caps' defines the capabilities browser, device and OS combinations where the test will run
caps = [
{
"deviceName" : "Google Pixel 3" ,
"platformName" : "Android" ,
"platformVersion" : "11" ,
"app" : "<lt_app_url>" ,
"isRealMobile" : True ,
"deviceOrientation" : "PORTRAIT" ,
"build" : "Demo" ,
},
]
# run_session function searches for 'lambtest' on google.com
def run_session ( desired_cap ):
driver = webdriver . Remote (
# hub.mobile-dev-1.dev.lambdatest.io/wd/hub",
command_executor = "https://LT_USERNAME:[email protected]/wd/hub" ,
desired_capabilities = desired_cap )
# driver.get("https://www.ifconfig.me")
# time.sleep(10)
# Test case for the lambdatest sample Android app.
# If you have uploaded your app, update the test case here.
search_element = WebDriverWait ( driver , 30 ). until (
EC . element_to_be_clickable (
( MobileBy . ACCESSIBILITY_ID , "Search Wikipedia" ))
)
search_element . click ()
search_input = WebDriverWait ( driver , 30 ). until (
EC . element_to_be_clickable (
( MobileBy . ID , "org.wikipedia.alpha:id/search_src_text" ))
)
search_input . send_keys ( "lambdatest" )
time . sleep ( 5 )
search_results = driver . find_elements_by_class_name (
"android.widget.TextView" )
assert ( len ( search_results ) > 0 )
# Invoke driver.quit() after the test is done to indicate that the test is completed.
driver . quit ()
# The Thread function takes run_session function and each set of capability from the caps array as an argument to run each session in parallel
for cap in caps :
Thread ( target = run_session , args = ( cap ,)). start ()上記のように、実装の大部分は変更されていません。インフラストラクチャの変更のみが行われます(つまり、browserstackの代わりに、アプリの自動化テストはlambdatestで実行されます)。
実装の観点から変化したものを分析しましょう。
browserstack
from appium import webdriver
from appium . webdriver . common . mobileby import MobileBy
from selenium . webdriver . support . ui import WebDriverWait
from selenium . webdriver . support import expected_conditions as EC
import time
userName = "BrowserStack_UserName"
accessKey = "BrowserStack_AccessKey"
desired_caps = {
"build" : "Python Android" ,
"device" : "Google Pixel 3" ,
"app" : "<app_url>"
}
driver = webdriver . Remote ( "https://" + userName + ":" + accessKey + "@hub-cloud.browserstack.com/wd/hub" , desired_caps )ソーセラブ
from threading import Thread
import time
from selenium import webdriver
from selenium . webdriver . common . keys import Keys
from selenium . webdriver . common . desired_capabilities import DesiredCapabilities
from selenium . common . exceptions import TimeoutException
from selenium . webdriver . support . ui import WebDriverWait
from selenium . webdriver . support import expected_conditions as EC
from appium . webdriver . common . mobileby import MobileBy
from appium import webdriver
# This array 'caps' defines the capabilities browser, device and OS combinations where the test will run
caps = {
caps [ 'platformName' ] = 'Android'
caps [ 'browserName' ] = 'Chrome'
caps [ 'appium:deviceName' ] = 'Google Pixel 3a GoogleAPI Emulator'
caps [ 'appium:platformVersion' ] = '11.0'
caps [ 'sauce:options' ] = {}
caps [ 'sauce:options' ][ 'appiumVersion' ] = '1.20.2'
}
# run_session function searches for 'saucelabs' on google.com
def run_session ( desired_cap ):
driver = webdriver . Remote (
command_executor = "https://SAUCE_USERNAME:[email protected]/wd/hub" ,
desired_capabilities = desired_cap )lambdatest
from threading import Thread
import time
from selenium import webdriver
from selenium . webdriver . common . keys import Keys
from selenium . webdriver . common . desired_capabilities import DesiredCapabilities
from selenium . common . exceptions import TimeoutException
from selenium . webdriver . support . ui import WebDriverWait
from selenium . webdriver . support import expected_conditions as EC
from appium . webdriver . common . mobileby import MobileBy
from appium import webdriver
caps = [
{
"deviceName" : "Google Pixel 3" ,
"platformName" : "Android" ,
"platformVersion" : "11" ,
"app" : "<lt_app_url>" ,
"build" : "Demo" ,
},
]
def run_session ( desired_cap ):
driver = webdriver . Remote ( command_executor = "https://LT_USERNAME:[email protected]/wd/hub" , desired_capabilities = desired_cap )ソースラボまたはブラウストックからlambdatestに移行する方法について説明しました。ローカルグリッドからクラウドベースのAppiumグリッドに移行する方法を調べましょう。
Appiumの望ましい機能は、JSONオブジェクトに包まれたキー価値ペアのコレクションです。これらのキー価値ペアは、必要なテスト自動化セッションのAPPIUMサーバーを要求します。
Samsung Galaxy Tab S4でAndroid 10を実行しているSamsung Galaxy Tabでアプリテストを実行するとしましょう。以下に示すように、同じことを機能の形で定義できます。
caps = [
{
"deviceName" : "Galaxy Tab S4" ,
"platformName" : "Android" ,
"platformVersion" : "10" ,
"build" : "Demo" ,
},
]開始するには、テストスイートの構成設定の認証を変更します。 Lambdatest Appiumグリッドでテストを実行するには、有効なユーザー名とアクセスキーが必要です。すでにローカルグリッドでテストを実行している場合は、テストスクリプトを変更して、目的の機能と希望の機能を初期化する必要があります。
lambdatest認証の詳細を使用して、 @hub.lambdatest.com/wd/hubに機能を渡すと、完了です。サンプルPythonテストスクリプトは次のとおりです。
#samplewikipedia.py
import ssl
try :
_create_unverified_https_context = ssl . _create_unverified_context
except AttributeError :
# Legacy Python that doesn't verify HTTPS certificates by default
pass
else :
# Handle target environment that doesn't support HTTPS verification
ssl . _create_default_https_context = _create_unverified_https_context
from threading import Thread
import time
from selenium import webdriver
from selenium . webdriver . common . keys import Keys
from selenium . webdriver . common . desired_capabilities import DesiredCapabilities
from selenium . common . exceptions import TimeoutException
from selenium . webdriver . support . ui import WebDriverWait
from selenium . webdriver . support import expected_conditions as EC
from appium . webdriver . common . mobileby import MobileBy
from appium import webdriver
# This array 'caps' defines the capabilities of the browser, device, and OS combinations where the test will run
caps = [
{
"deviceName" : "Galaxy Tab S4" ,
"platformName" : "Android" ,
"platformVersion" : "10" ,
"app" : "lt://APP10051525539885437397" ,
"isRealMobile" : True ,
"deviceOrientation" : "PORTRAIT" ,
"visual" : True ,
"console" : True ,
"build" : "Demo" ,
},
]
# run_session function searches for 'lambdatest' on google.com
def run_session ( desired_cap ):
driver = webdriver . Remote (
# hub.mobile-dev-1.dev.lambdatest.io/wd/hub",
command_executor = "https://LT_USERNAME:[email protected]/wd/hub" ,
desired_capabilities = desired_cap )
# driver.get("https://www.ifconfig.me")
# time.sleep(10)
# Test case for the lambdatest sample Android app.
# If you have uploaded your app, update the test case here.
search_element = WebDriverWait ( driver , 30 ). until (
EC . element_to_be_clickable (
( MobileBy . ACCESSIBILITY_ID , "Search Wikipedia" ))
)
search_element . click ()
search_input = WebDriverWait ( driver , 30 ). until (
EC . element_to_be_clickable (
( MobileBy . ID , "org.wikipedia.alpha:id/search_src_text" ))
)
search_input . send_keys ( "lambdatest" )
time . sleep ( 5 )
search_results = driver . find_elements_by_class_name (
"android.widget.TextView" )
assert ( len ( search_results ) > 0 )
# Invoke driver.quit() after the test is done to indicate that the test is completed.
driver . quit ()
# The Thread function takes run_session function and each set of capability from the caps array as an argument to run each session in parallel
for cap in caps :
Thread ( target = run_session , args = ( cap ,)). start ()それだけです!質問がある場合や追加情報が必要な場合は、 24時間365日のチャットサポートに連絡するか、[email protected]に直接メールで送信できます。
Lambdatestの機能、セットアップ、テストの自動化、モバイルアプリテスト、レスポンシブテスト、手動テストに関する詳細については、次のリンクをご覧ください。
Lambdatestコミュニティにより、人々は技術愛好家と交流できます。接続し、質問をし、技術に精通した人々から学びます。世界中の専門家とWeb開発、テスト、DevOpsのベストプラクティスについて話し合いますか?
最新の機能と製品アドオンを最新の状態に保つには、changelogにアクセスしてください
LambDatestは、高速で信頼性が高く、スケーラブルで安全な主要なテスト実行およびオーケストレーションプラットフォームです。ユーザーは、3000以上の異なるブラウザー、オペレーティングシステム、実際のデバイスの組み合わせでWebアプリとモバイルアプリの手動および自動テストの両方を実行できます。 Lambdatestを使用すると、企業は開発者のフィードバックを迅速に確保し、より速く市場に出ることができます。 130か国以上の500を超える企業と100万人以上のユーザーが、テストのニーズをLambdatestに依存しています。
