
Blog ⋅ Docs ⋅ Pembelajaran Hub ⋅ Buletin ⋅ Sertifikasi ⋅ YouTube
Appium adalah alat untuk mengotomatisasi aplikasi asli, web seluler, dan hybrid di platform iOS, Android, dan Windows. Ini mendukung aplikasi asli iOS yang ditulis dalam aplikasi Objective-C atau Swift dan Android yang ditulis dalam Java atau Kotlin. Ini juga mendukung aplikasi web seluler yang diakses menggunakan browser seluler (Appium mendukung Safari di iOS dan Chrome atau aplikasi 'browser' bawaan di Android). Lakukan Tes Otomasi Appium di Cloud Online Lambdatest.
Kiat: Jika Anda tidak memiliki file .apk atau .ipa , Anda dapat menjalankan tes sampel Anda di lambdatest dengan menggunakan sampel kami? Aplikasi atau sampel Android? aplikasi iOS.
Berikut adalah daftar bahasa dan kerangka kerja yang didukung oleh lambdatest untuk menjalankan uji otomatisasi appium di platform cloud perangkat nyata lambdatest.
| Jawa | Php | Rubi | C# | Python | Javascript |
|---|---|---|---|---|---|
| Junit | Php | Timun | C# | Berperilaku baik | Webdriverio |
| Robot |
Kami mendukung semua bahasa dan kerangka kerja yang kompatibel dengan Appium, jadi jika favorit Anda tidak ada di dalam meja. Jangan khawatir, Anda masih bisa menjalankan tes. Hubungi kami untuk bantuan apapun.
Catatan: Kami sedang mempersiapkan dokumentasi untuk lebih banyak kerangka kerja. Jika Anda ingin kami memprioritaskan dokumentasi kerangka kerja pilihan Anda maka jangan ragu untuk memberi kami teriakan .
Unggah aplikasi iOS Anda (file .ipa) atau aplikasi Android (file .apk) ke server lambdatest menggunakan API REST kami. Anda perlu memberikan nama pengguna dan AccessKey Anda dalam Username:AccessKey di perintah CURL untuk otentikasi. Pastikan untuk menambahkan jalur AppFile dalam permintaan CURL. Berikut adalah contoh permintaan keriting untuk mengunggah aplikasi Anda menggunakan API REST kami:
Untuk 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"'Untuk 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 ""Menggunakan URL Aplikasi:
Untuk 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"'Untuk 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"'Catatan Info:
Respons dari ikal di atas akan menjadi objek JSON yang berisi App URL dari format - lt: // app123456789123456789 dan akan digunakan pada langkah berikutnya.
Berikut adalah skrip otomatisasi sampel di java untuk aplikasi sampel yang diunduh di atas. Pastikan untuk memperbarui app_url , username , dan accesskey di kode di bawah ini.
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 untuk menjalankan tes Anda dan menentukan kemampuan perangkat. Silakan temukan kode sampel di bawah ini untuk hal yang sama. <? 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 > Debug dan jalankan kode Anda. Jalankan iOSApp.java atau AndroidApp.java di editor Anda.
Setelah Anda menjalankan tes, Anda dapat melihat eksekusi pengujian bersama dengan log. Anda akan dapat melihat kasus uji lewat atau gagal. Anda dapat melihat hal yang sama di Lambdatest Automation.
Kemampuan sampel untuk Android dan iOS disebutkan di bawah ini -
{
"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,
}
Catatan: Bidang wajib ditandai dengan tanda bintang *
| KUNCI | Nilai | Deskripsi kemampuan |
|---|---|---|
| *pengguna | Ketik: String | Nama pengguna LT Anda. |
| *AccessKey | Ketik: String | Kunci akses LT Anda. |
| membangun | Ketik: String Default: Tanpa Judul build=iOS Small Run | Anda dapat mengelompokkan tes Anda seperti pekerjaan yang berisi beberapa tes. |
| nama | Ketik: String Default: testid dari tes. Jika namanya tidak dilewati. name=iphone 6 Small Run | Nama tes Anda. |
| proyek | Akan tetap kosong jika 'proyek' tidak dilewati dalam kemampuan.project=Small Run | Anda dapat mengelompokkan bangunan Anda seperti proyek yang berisi banyak pekerjaan. |
| *DeviceName | Ketik: StringiPhone 13 | Nama perangkat. |
| *PlatformName | Ketik: Stringios | Nama OS. |
| *PlatformVersion | Ketik: String14 | Versi OS. |
| *Aplikasi | Ketik: Stringapp=lt://APP100201061631704657918380 | Menerima URL aplikasi yang dikembalikan setelah mengunggah aplikasi di server paling lambdat. |
| queuetimeout | Ketik: String Default: 600 queueTimeout=300 | Kemampuan ini dapat digunakan untuk memodifikasi nilai batas waktu antrian dalam rentang. Kisaran Queuetimeout: 300-900. |
| IDLETIMEOUT | Ketik: String Default: 120 idleTimeout=120 | Kemampuan ini dapat digunakan untuk memodifikasi nilai batas waktu. |
| visual | Jenis: Boolean Default: Salah visual=TRUEATAU visual=FALSE | Perintah dengan perintah screenshot akan direkam pada setiap langkah tes. Secara default bendera diatur sebagai OFF. Catatan: Waktu eksekusi tes akan meningkat jika ditetapkan sebagai 'benar'. |
| video | Jenis: Boolean Default: Benar video=TRUEATAU video=FALSE | Rekaman video layar lengkap. |
| Devicelog | Jenis: Boolean Default: Benar devicelog=TRUEATAU devicelog=FALSE | Aktifkan log perangkat. |
| jaringan | Jenis: Boolean Default: Benar network=TRUEATAU network=FALSE | Aktifkan log jaringan. |
| Deviceorientation | Ketik: StringdeviceOrientation=portraitATAU deviceOrientation=landscape | Ubah orientasi layar perangkat. |
| terowongan | Jenis: Booleantunnel=TRUEATAU tunnel=FALSE | Untuk menguji aplikasi lokal dengan lambdatest. |
| Tunnelname | Jenis: BooleantunnelName=RabbitHole | Nama terowongan. |
| DedicatedProxy | Jenis: BooleandedicatedProxy=TRUEATAU dedicatedProxy=FALSE | Proxy khusus. |
| Autograntpermissions | Jenis: BooleanautoGrantPermissions=TRUEATAU autoGrantPermissions=FALSE | Mintalah Appium secara otomatis menentukan izin mana yang diperlukan aplikasi Anda dan berikan ke aplikasi yang diinstal. Default ke false. Jika Noreset benar, kemampuan ini tidak berhasil. |
| Autodismissalerts | Jenis: BooleanautoDismissAlerts=TRUEATAU autoDismissAlerts=FALSE | [hanya iOS] kemampuan appium untuk mengabaikan peringatan/popup pada perangkat iOS. |
| Autoacceptalerts | Jenis: BooleanautoAcceptAlerts=TRUEATAU autoAcceptAlerts=FALSE | [hanya iOS] kemampuan appium untuk menerima peringatan/popup pada perangkat iOS. |
| newCommandtimeout | Ketik: String60 | Berapa lama (dalam hitungan detik) Appium akan menunggu perintah baru dari klien sebelum mengasumsikan klien berhenti dan mengakhiri sesi. |
| bahasa | Ketik: Stringfr | Bahasa yang akan ditetapkan untuk iOS (hanya driver xcuitest) dan Android. |
| lokal | Ketik: Stringfr_CA, CA | Lokal untuk mengatur iOS (hanya driver xcuitest) dan Android. Format FR_CA untuk iOS. Format CA (Singkatan Nama Negara) untuk Android. |
| Noreset | Jenis: Booleantrue | Jangan setel ulang status aplikasi sebelum sesi ini. Lihat di sini untuk detail lebih lanjut. |
| AutomationName | Jenis: Boolean Default: Appium automationName = Appium | Mesin otomatisasi mana yang akan digunakan. Catatan: Setel sebagai false dalam kode otomasi aplikasi, jadi tidak dapat diubah. Appium (default), atau uiautomator2, espresso, atau uiautomator1 untuk android, atau xcuitest atau instrumen untuk iOS, atau yoiengine untuk aplikasi yang dibangun dengan yoiengine. |
| Eventtimings | Jenis: Boolean Default: Salah true | Aktifkan atau nonaktifkan pelaporan waktu untuk berbagai peristiwa appium-internal (misalnya, awal dan akhir dari setiap perintah, dll.). Untuk mengaktifkan, gunakan True. Pengaturan waktu kemudian dilaporkan sebagai properti acara berdasarkan respons terhadap permintaan sesi saat ini. Lihat Acara Timing Documents untuk struktur respons ini. |
| Geolokasi | Ketik: Stringfr | Memungkinkan Anda untuk mensimulasikan perilaku seluler dari lokasi yang berbeda dengan memilih alamat IP yang di -host di berbagai negara di seluruh dunia. |
| OtherApps | Jenis: Array String Default: [] atau array kosong "otherApps":["lt://APP1002211081648217405891389","lt://APP1002211081648217429465823"] | "Menerima daftar URL Aplikasi yang dikembalikan setelah mengunggah aplikasi di server Lambdatest. Kondisi yang harus dipenuhi: 1. Aplikasi juga harus dilewati jika "OtherApps" dilewati. 2. Panjang URL Aplikasi Array <= 3. 3. Di MAX 3 Aplikasi lain dapat diinstal. 4. Aplikasi tidak boleh ada di dalam array 'OtherApp'. 5. Tidak ada digandakan dalam array 'OtherApp'. " |
Punya pertanyaan? Silakan hubungi dukungan obrolan 24X7 kami atau Anda juga dapat mengirimi kami di [email protected].
Menggunakan terowongan lambdatest, Anda dapat menguji aplikasi yang di -host secara lokal dan pribadi di berbagai perangkat Android dan iOS nyata di platform otomatisasi uji appium paling lambdat. Lambdatest Tunnel menggunakan protokol seperti Web Socket, HTTPS, SSH (Secure Shell) dan lebih banyak lagi untuk memungkinkan Anda membangun koneksi terowongan yang aman dan unik antara sistem lokal Anda dan server cloud paling lambdat.
Dalam dokumentasi ini, pelajari cara mengkonfigurasi terowongan lambdatest untuk menguji aplikasi yang di -host secara lokal atau swasta saat melakukan otomatisasi aplikasi seluler.
Untuk menguji aplikasi secara lokal, Anda perlu mengonfigurasi:
Koneksi dengan terowongan lambdatest.
Uji skrip untuk dijalankan melalui terowongan lambdatest.
Di bawah ini adalah langkah -langkah untuk mengonfigurasi koneksi dengan terowongan lambdatest.
Ekstrak file biner yang diunduh.
Arahkan ke prompt perintah dan arahkan ke direktori/folder tempat Anda mengekstrak file biner.
Jalankan perintah di bawah ini di terminal.
. / LT -- user { user 's login email} --key {user' s access key } -- tunnelName { user 's tunnel name} Setelah mengkonfigurasi koneksi dengan terowongan lambdatest, Anda harus mengatur tunnel kemampuan ke True .
| Kunci | Nilai | Keterangan | Kemampuan yang diinginkan |
|---|---|---|---|
| terowongan | Benar/Salah | Konfigurasikan terowongan | "tunnel" : True, |
Anda juga dapat menambahkan kemampuan tunnel menggunakan generator kemampuan lambdatest.
Jika Anda memiliki pertanyaan atau memerlukan informasi tambahan, kirimkan mereka di dukungan obrolan 24x7 kami atau kirimkan kami langsung di [email protected].
Inspektur GUI untuk aplikasi seluler dan banyak lagi, ditenagai oleh server Appium (terpisah yang diinstal). Appium Inspector adalah klien Appium (seperti WebDriverio, klien Java Appium, klien Python Appium, dll) dengan antarmuka pengguna. Kami dapat menggunakan antarmuka untuk menentukan versi server Appium, mengatur kemampuan. Setelah server Appium sedang berjalan & berjalan dengan aplikasi, kami dapat berinteraksi dengan elemen dan menjalankan perintah Appium lainnya.
Pada akhir topik ini, Anda akan dapat:
Unggah aplikasi iOS Anda (file .ipa) atau aplikasi Android (file .apk) ke server lambdatest menggunakan API REST kami. Anda perlu memberikan nama pengguna dan AccessKey Anda dalam Username:AccessKey di perintah CURL untuk otentikasi. Pastikan untuk menambahkan jalur AppFile dalam permintaan CURL. Berikut adalah contoh permintaan keriting untuk mengunggah aplikasi Anda menggunakan API REST kami:
Menggunakan File Aplikasi:
Untuk 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"'Untuk 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 "'Menggunakan URL Aplikasi:
Untuk 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"'Untuk 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"'Tip:
App URL dari format - lt: // app123456789123456789 dan akan digunakan pada langkah berikutnya.Mulai Appium Inspektur & pilih Lambdatest dari daftar penyedia uji cloud.
Masukkan nama pengguna & kunci akses Anda. Anda mungkin menemukan kredensial yang tersedia di dasbor lambdatest
Konfigurasikan kemampuan paling lambdat di tab kemampuan yang diinginkan di Appium Inspector. Gunakan URL aplikasi unik yang diperoleh pada Langkah 1 untuk mengatur nilai kemampuan aplikasi. Daftar semua kemampuan yang didukung oleh Lambdatest tersedia di sini
Atau, kami juga dapat pergi ke generator kemampuan kami dan menghasilkan representasi kemampuan menggunakan GUI.

Setelah ini selesai, Anda sekarang dapat menjalankan tes dengan mengklik sesi Mulai. Setelah Anda memulai sesi, rekaman video bersama dengan informasi terperinci dan log dari uji coba akan tersedia di dasbor lambdatest.

Punya pertanyaan?
Silakan hubungi dukungan obrolan 24X7 kami atau Anda juga dapat mengirimi kami di [email protected].
Dalam dokumentasi ini, kami melihat beberapa API yang akan membantu Anda mengoptimalkan alur kerja pengujian aplikasi seluler Anda. Jika Anda melakukan pengujian aplikasi langsung atau otomatis, Anda dapat menggunakan API ini untuk mengambil dan menghapus aplikasi.
Untuk mengambil daftar aplikasi Anda yang diunggah bersama dengan ID aplikasi mereka, jalankan perintah CURL di bawah ini.
curl -- location -- request GET 'https://YOUR_LAMBDATEST_USERNAME:[email protected]/app/data?type=ios&level=user'Ditampilkan di bawah ini adalah respons terhadap permintaan keriting di atas.
{ "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"
} ] Untuk menghapus aplikasi Anda yang menaikkan, jalankan perintah CURL di bawah ini.
curl -- location -- request DELETE 'https: //YOUR_LAMBDATEST_USERNAME:[email protected]/app/delete'
-- header 'Content-Type: application/json'
-- data - raw ' {
"appIds" : "APPID1,APPID2"
} 'Ditampilkan di bawah ini adalah respons terhadap permintaan keriting di atas.
{ "message" : "Deleted successfully." }Itu saja! Jika Anda memiliki pertanyaan atau memerlukan informasi tambahan, Anda dapat menjangkau dukungan obrolan 24x7 kami atau mengirimkan kami langsung di [email protected].
Lambdatest menawarkan grid otomatisasi appium online untuk melakukan otomatisasi aplikasi. Grid Appium online tersedia di jaringan lokal, browserstack, saucelab, dan lambdatest. Oleh karena itu, Anda dapat dengan mudah memigrasikan skrip otomatisasi Appium Anda saat ini (atau suite) dari kisi lokal, laboratorium saus atau browserstack ke lambdatest.
Dalam dokumentasi ini, kami melihat cara memanfaatkan cloud lambdatest untuk otomatisasi aplikasi dan memigrasikan skrip pengujian Anda (atau suite uji) dari kisi lokal, laboratorium saus atau browserstack. Anda dapat menggunakan kemampuan yang diinginkan Lambdatest dalam tes Anda, mengotentikasi sesi tes Anda, dan menjalankan tes di cloud.
Migrasi tes kisi -kisi lokal Anda saat ini, Browesestack atau Saus Labs ke Lambdatest memerlukan beberapa penyesuaian dalam kode Anda. Dalam panduan ini, kita akan melihat cara memanfaatkan kemampuan yang diinginkan Lambdatest dalam pengujian Anda, mengotentikasi sesi tes Anda, dan menjalankan tes di browser cloud kami.
Untuk pindah dari kisi -kisi lokal, browesestack atau saus laboratorium ke lambdatest, Anda perlu membuat beberapa perubahan pada suite pengujian Anda seperti otentikasi, kemampuan yang diinginkan dll.
Pertama, Anda perlu mengubah otentikasi dalam pengaturan konfigurasi suite tes Anda. Untuk menjalankan tes di Lambdatest Appium Grid, Anda harus memiliki user_name dan access_key yang valid untuk melakukan tes di grid cloud kami. Jika Anda tidak memiliki akun di Lambdatest, kunjungi halaman pendaftaran Lambdatest dan buat akun baru.
Berikut ini adalah perubahan dalam parameter:
Anda dapat menemukan Username dan Access Key di bagian profil lambdatest dari dasbor otomatisasi .

Saat bermigrasi dari BrowserStack atau Saucelabs ke Lambdatest, Anda perlu membuat perubahan berikut dalam kode yang ada:
Berikut adalah perbandingan berdampingan dari masing-masing bidang yang telah kami soroti di atas:
| Milik | Jenis | BrowserStack | Saucelabs | Lambdatest |
|---|---|---|---|---|
| Nama belakang | Rangkaian | Nama pengguna untuk mengakses Appium Grid di BrowserStack | Nama pengguna untuk mengakses Appium Grid di Saus Labs | Nama pengguna untuk mengakses Appium Grid di Lambdatest |
| AccessKey | Rangkaian | AccessKey untuk mengakses Appium Grid di BrowserStack | AccessKey untuk mengakses Appium Grid di Saus Labs | AccessKey untuk mengakses Appium Grid di Lambdatest |
| URL hub | Rangkaian | @hub-cloud.browserstack.com/wd/hub | ondemand.us-west-1.saucelabs.com/wd/hub | @hub.lambdatest.com/wd/hub |
Untuk implementasi berbasis Python, berikut adalah perubahan dalam skrip untuk proses otentikasi.
BrowserStack
userName = "BrowserStack_UserName"
accessKey = "BrowserStack_AccessKey"Saucelabs
userName = "SAUCE_USERNAME"
accessKey = "SAUCE_ACCESS_KEY"Lambdatest
userName = "LambdaTest_UserName"
accessKey = "LambdaTest_AccessKey"Sekarang Anda harus memodifikasi URL hub di pengaturan konfigurasi test suite Anda. URL hub adalah dari jenis string dan menentukan lokasi hub yang akan dialihkan oleh uji Appium untuk dieksekusi.
Untuk implementasi berbasis Python, berikut adalah perubahan dalam skrip untuk URL hub.
BrowserStack
@hub-cloud.browserstack.com/wd/hub
Saucelabs
@ondemand.us-west-1.saucelabs.com/wd/hub
Lambdatest
@mobile-hub.lambdatest.com/wd/hub
Generator kemampuan memungkinkan Anda untuk menentukan kemampuan yang diinginkan (atau kemampuan), yang merupakan opsi konfigurasi yang memungkinkan Anda untuk menentukan yang berikut:
Anda juga dapat memilih opsi canggih lainnya yang tersedia di generator kemampuan Lambdatest.
Untuk migrasi, kami telah mengambil tes Appium yang berbasis di Java. Di bawah ini adalah tangkapan layar dari generator kemampuan BrowserStack dan Lambdatest.



Perbandingan kemampuan yang dihasilkan oleh BrowserStack dan Generator Kemampuan Lambdatest:
| Kemampuan | BrowserStack | Saucelabs | Lambdatest |
|---|---|---|---|
| Perangkat | perangkat | DeviceName | DeviceName |
| Sistem Operasi | os_version | PlatformVersion | PlatformVersion |
Berikut ini adalah tinjauan umum perbandingan kemampuan yang diinginkan untuk bahasa 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" ) ;Saucelabs
//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" ) ;Mari kita lihat contoh yang menunjukkan seluruh proses migrasi. Skenario pengujian adalah untuk membuka aplikasi Wikipedia yang mencari istilah 'lambdatest'. Tes berikut berjalan di Google Pixel 3 menjalankan 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 ()Mayoritas implementasi, seperti yang ditunjukkan di atas, tetap tidak berubah. Hanya perubahan pada infrastruktur yang dilakukan (yaitu bukannya browserstack, tes otomatisasi aplikasi akan dijalankan di lambdatest).
Mari kita analisis apa yang telah berubah dari sudut pandang implementasi.
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 )Saucelabs
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 )Kami telah membahas cara bermigrasi dari Saus Labs atau BrowserStack ke Lambdatest. Mari kita jelajahi cara bermigrasi dari jaringan lokal ke Appium Grid berbasis cloud.
Kemampuan Appium yang diinginkan adalah kumpulan pasangan nilai kunci yang dibungkus di dalam objek JSON. Pasangan nilai kunci ini meminta server Appium untuk sesi otomatisasi pengujian yang diperlukan.
Katakanlah Anda ingin menjalankan tes aplikasi di Python di Samsung Galaxy Tab S4 menjalankan Android 10. Anda dapat mendefinisikan hal yang sama dalam bentuk kemampuan seperti yang diberikan di bawah ini.
caps = [
{
"deviceName" : "Galaxy Tab S4" ,
"platformName" : "Android" ,
"platformVersion" : "10" ,
"build" : "Demo" ,
},
]Untuk memulai, ubah otentikasi dalam pengaturan konfigurasi test suite Anda. Untuk menjalankan tes di Lambdatest Appium Grid, Anda memerlukan nama pengguna dan kunci akses yang valid. Jika Anda sudah melakukan tes di jaringan lokal Anda, Anda perlu memodifikasi skrip pengujian Anda untuk menginisialisasi driver Appium bersama dengan kemampuan yang Anda inginkan.
Lewati kemampuan ke @hub.lambdatest.com/wd/hub dengan detail otentikasi lambdatest Anda, dan Anda sudah selesai. Berikut adalah sampel skrip uji 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 ()Itu saja! Jika Anda memiliki pertanyaan atau memerlukan informasi tambahan, Anda dapat menjangkau dukungan obrolan 24x7 kami atau mengirimkan kami langsung di [email protected].
Kunjungi tautan berikut untuk mempelajari lebih lanjut tentang fitur Lambdatest, pengaturan dan tutorial seputar otomatisasi pengujian, pengujian aplikasi seluler, pengujian responsif, dan pengujian manual.
Komunitas Lambdatest memungkinkan orang untuk berinteraksi dengan penggemar teknologi. Terhubung, ajukan pertanyaan, dan pelajari dari orang-orang yang paham teknologi. Diskusikan Praktik Terbaik dalam Pengembangan Web, Pengujian, dan DevOps dengan para profesional dari seluruh dunia?
Untuk tetap diperbarui dengan fitur terbaru dan tambahan produk, kunjungi Changelog
Lambdatest adalah platform eksekusi uji dan orkestrasi terkemuka yang cepat, andal, dapat diskalakan, dan aman. Ini memungkinkan pengguna untuk menjalankan pengujian manual dan otomatis aplikasi web dan seluler di 3000+ browser yang berbeda, sistem operasi, dan kombinasi perangkat nyata. Menggunakan lambdatest, bisnis dapat memastikan umpan balik pengembang yang lebih cepat dan karenanya mencapai pasar yang lebih cepat ke pasar. Lebih dari 500 perusahaan dan 1 juta + pengguna di 130+ negara bergantung pada lambdatest untuk kebutuhan pengujian mereka.
