
บล็อก⋅เอกสาร⋅การเรียนรู้ฮับ⋅จดหมายข่าว⋅การรับรอง⋅ YouTube
Appium เป็นเครื่องมือสำหรับแอพพลิเคชั่น Native, Mobile Web และ Hybrid โดยอัตโนมัติบนแพลตฟอร์ม iOS, Android และ Windows รองรับแอพดั้งเดิมของ iOS ที่เขียนด้วยแอพ Nomany-C หรือ Swift และ Android ที่เขียนด้วย Java หรือ Kotlin นอกจากนี้ยังรองรับแอพพลิเคชั่นเว็บมือถือที่เข้าถึงได้โดยใช้เบราว์เซอร์มือถือ (Appium รองรับ Safari บน iOS และ Chrome หรือแอพ 'เบราว์เซอร์ในตัวบน Android) ทำการทดสอบ Appium Automation บนคลาวด์ออนไลน์ของ Lambdatest
เคล็ดลับ: หากคุณไม่มีไฟล์ . APK หรือ . IPA คุณสามารถเรียกใช้การทดสอบตัวอย่างของคุณใน LambDatest โดยใช้ตัวอย่างของเรา? แอพ Android หรือตัวอย่าง? แอพ iOS
นี่คือรายการภาษาและเฟรมเวิร์กที่สนับสนุนโดย Lambdatest เพื่อเรียกใช้การทดสอบ Appium Automation บนแพลตฟอร์มคลาวด์อุปกรณ์ Lambdatest Real Device
| ชวา | PHP | ทับทิม | C# | งูหลาม | จาวาสคริปต์ |
|---|---|---|---|---|---|
| จูท | PHP | แตงกวา | C# | ประพฤติ | webdriverio |
| หุ่นยนต์ |
เราสนับสนุนทุกภาษาและเฟรมเวิร์กที่เข้ากันได้กับ Appium ดังนั้นในกรณีที่คุณโปรดปรานไม่ได้อยู่ในตาราง ไม่ต้องกังวลคุณยังสามารถทำการทดสอบได้ ติดต่อเรา เพื่อขอความช่วยเหลือ
หมายเหตุ: เรากำลังเตรียมเอกสารสำหรับเฟรมเวิร์กเพิ่มเติม หากคุณต้องการให้เราจัดลำดับความสำคัญของเอกสารเกี่ยวกับกรอบงานที่คุณต้องการอย่าลังเลที่จะให้เรา ตะโกน
อัปโหลดแอปพลิเคชัน iOS ของคุณ (ไฟล์. IPA) หรือแอปพลิเคชัน Android (.APK ไฟล์) ไปยังเซิร์ฟเวอร์ LambDatest โดยใช้ REST API ของเรา คุณต้องระบุ ชื่อผู้ใช้ และ AccessKey ของคุณในชื่อ Username:AccessKey ในคำสั่ง CURL สำหรับการตรวจสอบสิทธิ์ ตรวจสอบให้แน่ใจว่าได้เพิ่มเส้นทางของ AppFile ในคำขอ CURL นี่คือตัวอย่างคำขอ CURL เพื่ออัปโหลดแอปของคุณโดยใช้ REST API ของเรา:
สำหรับ 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 App:
สำหรับ 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"'ข้อมูลหมายเหตุ:
การตอบสนองของ Curl ข้างต้นจะเป็นวัตถุ JSON ที่มี App URL ของรูปแบบ - 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 Access ของคุณ |
| สร้าง | ประเภท: สตริง ค่าเริ่มต้น: ไม่มีชื่อ build=iOS Small Run | คุณสามารถจัดกลุ่มการทดสอบของคุณเช่นงานที่มีการทดสอบหลายครั้ง |
| ชื่อ | ประเภท: สตริง ค่าเริ่มต้น: ทดสอบการทดสอบ ในกรณีที่ไม่ผ่านชื่อ name=iphone 6 Small Run | ชื่อการทดสอบของคุณ |
| โครงการ | จะยังคงว่างเปล่าในกรณี 'โครงการ' ไม่ผ่านความสามารถproject=Small Run | คุณสามารถจัดกลุ่มงานสร้างของคุณเช่นโครงการที่มีหลายงาน |
| *devicename | ประเภท: สตริงiPhone 13 | ชื่อของอุปกรณ์ |
| *PlatformName | ประเภท: สตริงios | ชื่อของระบบปฏิบัติการ |
| *platformversion | ประเภท: สตริง14 | เวอร์ชันระบบปฏิบัติการ |
| *แอป | ประเภท: สตริงapp=lt://APP100201061631704657918380 | ยอมรับ URL ของแอพที่ส่งคืนหลังจากอัปโหลดแอพบนเซิร์ฟเวอร์ Lambdatest |
| queuetimeout | ประเภท: สตริง ค่าเริ่มต้น: 600 queueTimeout=300 | ความสามารถนี้สามารถใช้ในการปรับเปลี่ยนค่าการหมดเวลาของคิวภายในช่วง ช่วง queuetimeout: 300-900 |
| idletimeout | ประเภท: สตริง ค่าเริ่มต้น: 120 idleTimeout=120 | ความสามารถนี้สามารถใช้ในการปรับเปลี่ยนค่าหมดเวลา |
| ภาพ | ประเภท: บูลีน ค่าเริ่มต้น: FALSE visual=TRUEหรือ visual=FALSE | คำสั่งโดยสกรีนช็อตคำสั่งจะถูกบันทึกในแต่ละขั้นตอนการทดสอบ โดยค่าเริ่มต้นตั้งค่าสถานะเป็นปิด หมายเหตุ: เวลาทดสอบจะเพิ่มขึ้นหากตั้งค่าเป็น 'จริง' |
| วิดีโอ | ประเภท: บูลีน ค่าเริ่มต้น: จริง video=TRUEหรือ video=FALSE | การบันทึกวิดีโอของหน้าจอที่สมบูรณ์ |
| การเบี่ยงเบน | ประเภท: บูลีน ค่าเริ่มต้น: จริง devicelog=TRUEหรือ devicelog=FALSE | เปิดใช้งานบันทึกอุปกรณ์ |
| เครือข่าย | ประเภท: บูลีน ค่าเริ่มต้น: จริง network=TRUEหรือ network=FALSE | เปิดใช้งานบันทึกเครือข่าย |
| อุปกรณ์ | ประเภท: สตริงdeviceOrientation=portraitหรือ deviceOrientation=landscape | เปลี่ยนการวางแนวหน้าจอของอุปกรณ์ |
| อุโมงค์ | ประเภท: บูลีนtunnel=TRUEหรือ tunnel=FALSE | เพื่อทดสอบแอปพลิเคชันท้องถิ่นด้วย Lambdatest |
| TunnelName | ประเภท: บูลีนtunnelName=RabbitHole | ชื่อของอุโมงค์ |
| พร็อกซี่เฉพาะ | ประเภท: บูลีนdedicatedProxy=TRUEหรือ dedicatedProxy=FALSE | พร็อกซีทุ่มเท |
| autograntpermissions | ประเภท: บูลีนautoGrantPermissions=TRUEหรือ autoGrantPermissions=FALSE | ให้ Appium กำหนดโดยอัตโนมัติว่าแอปของคุณต้องการและมอบให้กับแอพในการติดตั้งโดยอัตโนมัติ ค่าเริ่มต้นเป็นเท็จ หาก NORESET เป็นจริงความสามารถนี้ไม่ได้ผล |
| Autodismissalerts | ประเภท: บูลีนautoDismissAlerts=TRUEหรือ autoDismissAlerts=FALSE | [iOS เท่านั้น] ความสามารถของ Appium ในการยกเลิกการแจ้งเตือน/ป๊อปอัปบนอุปกรณ์ iOS |
| Autoacceptalerts | ประเภท: บูลีนautoAcceptAlerts=TRUEหรือ autoAcceptAlerts=FALSE | [iOS เท่านั้น] ความสามารถของ Appium ในการยอมรับการแจ้งเตือน/ป๊อปอัปบนอุปกรณ์ iOS |
| newCommandtimeout | ประเภท: สตริง60 | Appium (ในไม่กี่วินาที) จะรอคำสั่งใหม่จากลูกค้าก่อนที่จะสมมติว่าลูกค้าเลิกและสิ้นสุดเซสชัน |
| ภาษา | ประเภท: สตริงfr | ภาษาที่จะตั้งค่าสำหรับ iOS (ไดรเวอร์ xcuitest เท่านั้น) และ Android |
| สถานที่ | ประเภท: สตริงfr_CA, CA | locale เพื่อตั้งค่าสำหรับ iOS (ไดรเวอร์ xcuitest เท่านั้น) และ Android รูปแบบ fr_ca สำหรับ iOS รูปแบบ CA (ตัวย่อชื่อประเทศ) สำหรับ Android |
| นอร์เซ็ท | ประเภท: บูลีนtrue | อย่ารีเซ็ตสถานะแอพก่อนเซสชันนี้ ดูรายละเอียดเพิ่มเติมที่นี่ |
| ชื่ออัตโนมัติ | ประเภท: บูลีน ค่าเริ่มต้น: appium automationName = Appium | เครื่องยนต์อัตโนมัติที่จะใช้ หมายเหตุ: ตั้งค่าเป็นเท็จในรหัสระบบอัตโนมัติของแอพดังนั้นจึงไม่สามารถเปลี่ยนแปลงได้ Appium (ค่าเริ่มต้น) หรือ UIAUTOMATOR2, ESPRESSO หรือ UIAUTOMATOR1 สำหรับ Android หรือ XCuitest หรือ Instruments สำหรับ iOS หรือ YouiEngine สำหรับแอปพลิเคชันที่สร้างขึ้นด้วย YouiEngine |
| EventTimings | ประเภท: บูลีน ค่าเริ่มต้น: FALSE true | เปิดหรือปิดการรายงานการกำหนดเวลาสำหรับเหตุการณ์ที่เกิดขึ้นภายในต่าง ๆ (เช่นการเริ่มต้นและสิ้นสุดของแต่ละคำสั่ง ฯลฯ ) ในการเปิดใช้งานให้ใช้จริง การกำหนดเวลาจะถูกรายงานเป็นคุณสมบัติของเหตุการณ์ในการตอบสนองต่อการสืบค้นเซสชันปัจจุบัน ดูเอกสารกำหนดเวลาเหตุการณ์สำหรับโครงสร้างของการตอบกลับนี้ |
| ตำแหน่งทางภูมิศาสตร์ | ประเภท: สตริงfr | ช่วยให้คุณจำลองพฤติกรรมมือถือจากสถานที่ต่าง ๆ โดยเลือกที่อยู่ IP ที่โฮสต์ในหลายประเทศทั่วโลก |
| แอพอื่น ๆ | ประเภท: อาร์เรย์ของสตริง ค่าเริ่มต้น: [] หรืออาร์เรย์ที่ว่างเปล่า "otherApps":["lt://APP1002211081648217405891389","lt://APP1002211081648217429465823"] | "ยอมรับรายการ URL ของแอพที่ส่งคืนหลังจากอัปโหลดแอพบนเซิร์ฟเวอร์ Lambdatest เงื่อนไขที่น่าพึงพอใจ: 1. แอพควรผ่านถ้า“ Applother Appl” ผ่านไป 2. ความยาวของ URL แอพ อาร์เรย์ <= 3 3. สามารถติดตั้งแอพสูงสุด 3 แอพอื่น ๆ 4. แอพไม่ควรมีอยู่ภายในอาร์เรย์ 'OtherApp' 5. ไม่มีการทำซ้ำในอาร์เรย์ 'อื่น ๆ ' |
มีคำถาม? โปรดติดต่อได้ที่ การสนับสนุนการแชท 24x7 ของเราหรือคุณสามารถส่งจดหมายถึงเราได้ที่ [email protected]
ด้วยการใช้อุโมงค์ Lambdatest คุณสามารถทดสอบแอพที่โฮสต์ในพื้นที่และส่วนตัวในอุปกรณ์ Android และ iOS จริงบนแพลตฟอร์มการทดสอบอัตโนมัติของ Lambdatest Appium Lambdatest Tunnel ใช้โปรโตคอลเช่น เว็บซ็อกเก็ต, HTTPS, SSH (Secure Shell) และอื่น ๆ เพื่อให้คุณสร้างการเชื่อมต่ออุโมงค์ที่ปลอดภัยและเป็นเอกลักษณ์ระหว่างระบบท้องถิ่นของคุณและเซิร์ฟเวอร์คลาวด์ Lambdatest
ในเอกสารนี้เรียนรู้วิธีกำหนดค่าอุโมงค์ Lambdatest เพื่อทดสอบแอพที่โฮสต์ในพื้นที่หรือโฮสต์ส่วนตัวในขณะที่ดำเนินการระบบอัตโนมัติแอพมือถือ
ในการทดสอบแอพในเครื่องคุณจะต้องกำหนดค่า:
การเชื่อมต่อกับอุโมงค์ Lambdatest
ทดสอบสคริปต์เพื่อเรียกใช้ผ่านอุโมงค์ Lambdatest
แสดงด้านล่างเป็นขั้นตอนในการกำหนดค่าการเชื่อมต่อด้วยอุโมงค์ Lambdatest
แยกไฟล์ไบนารีที่ดาวน์โหลดมา
นำทางไปยังพรอมต์คำสั่งและชี้ไปที่ไดเรกทอรี/โฟลเดอร์ที่คุณดึงไฟล์ไบนารี
เรียกใช้คำสั่งด้านล่างในเทอร์มินัล
. / LT -- user { user 's login email} --key {user' s access key } -- tunnelName { user 's tunnel name} หลังจากกำหนดค่าการเชื่อมต่อด้วยอุโมงค์ Lambdatest คุณจะต้องตั้งค่า tunnel ความสามารถเป็น True
| สำคัญ | ค่า | คำอธิบาย | ความสามารถที่ต้องการ |
|---|---|---|---|
| อุโมงค์ | จริง/เท็จ | กำหนดค่าอุโมงค์ | "tunnel" : True, |
นอกจากนี้คุณยังสามารถเพิ่มความสามารถ tunnel โดยใช้เครื่องกำเนิดความสามารถของ Lambdatest
ในกรณีที่คุณมีคำถามใด ๆ หรือต้องการข้อมูลเพิ่มเติมใด ๆ ให้วางที่ การสนับสนุนการแชท 24x7 ของเราหรือส่งจดหมายถึงเราโดยตรงที่ [email protected]
ผู้ตรวจสอบ GUI สำหรับแอพมือถือและอื่น ๆ ขับเคลื่อนโดย เซิร์ฟเวอร์ Appium (ติดตั้งแยกต่างหาก) Appium Inspector เป็นไคลเอนต์ Appium (เช่น webdriverio, ไคลเอนต์ Java ของ Appium, ไคลเอนต์ Python ของ Appium ฯลฯ ) พร้อมส่วนต่อประสานผู้ใช้ เราสามารถใช้อินเทอร์เฟซสำหรับการระบุเวอร์ชันเซิร์ฟเวอร์ Appium, การตั้งค่าความสามารถในการตั้งค่า เมื่อเซิร์ฟเวอร์ Appium ทำงานและทำงานกับแอพเราสามารถโต้ตอบกับองค์ประกอบและเรียกใช้คำสั่ง Appium อื่น ๆ
ในตอนท้ายของหัวข้อนี้คุณจะสามารถ:
อัปโหลดแอปพลิเคชัน iOS ของคุณ (ไฟล์. IPA) หรือแอปพลิเคชัน Android (.APK ไฟล์) ไปยังเซิร์ฟเวอร์ LambDatest โดยใช้ REST API ของเรา คุณต้องระบุ ชื่อผู้ใช้ และ AccessKey ของคุณในชื่อ Username:AccessKey ในคำสั่ง CURL สำหรับการตรวจสอบสิทธิ์ ตรวจสอบให้แน่ใจว่าได้เพิ่มเส้นทางของ AppFile ในคำขอ CURL นี่คือตัวอย่างคำขอ CURL เพื่ออัปโหลดแอปของคุณโดยใช้ REST API ของเรา:
ใช้ไฟล์แอพ:
สำหรับ 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 App:
สำหรับ 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 ของรูปแบบ - LT: // APP123456789123456789 และจะใช้ในขั้นตอนต่อไปเริ่มต้น Appium Inspector & Select Lambdatest จากรายชื่อผู้ให้บริการทดสอบคลาวด์
ป้อนคีย์ชื่อผู้ใช้และการเข้าถึงของคุณ คุณอาจพบข้อมูลประจำตัวที่มีอยู่บนแดชบอร์ด Lambdatest
กำหนดค่าความสามารถของ Lambdatest ในแท็บความสามารถที่ต้องการบน Appium Inspector ใช้ URL แอพที่ไม่ซ้ำกันที่ได้รับในขั้นตอนที่ 1 เพื่อตั้งค่าความสามารถของแอพ รายการความสามารถทั้งหมดที่สนับสนุนโดย Lambdatest มีอยู่ที่นี่
อีกทางเลือกหนึ่งเราสามารถไปที่เครื่องกำเนิดความสามารถของเราและสร้างการแสดงความสามารถโดยใช้ GUI

เมื่อเสร็จสิ้นแล้วคุณสามารถเรียกใช้การทดสอบได้โดยคลิกที่เซสชันเริ่มต้น เมื่อคุณเริ่มต้นเซสชันการบันทึกวิดีโอพร้อมกับข้อมูลโดยละเอียดและบันทึกการทดสอบจะมีอยู่ในแดชบอร์ด Lambdatest

มีคำถาม?
โปรดติดต่อได้ที่ การสนับสนุนการแชท 24x7 ของเราหรือคุณสามารถส่งจดหมายถึงเราได้ที่ [email protected]
ในเอกสารนี้เราจะดู API บางตัวที่จะช่วยให้คุณเพิ่มประสิทธิภาพการทดสอบแอพมือถือของคุณ หากคุณกำลังทำการทดสอบแอพสดหรืออัตโนมัติคุณสามารถใช้ API เหล่านี้เพื่อดึงและลบแอพ
ในการดึงรายการแอพที่อัปโหลดของคุณพร้อมกับรหัสแอปของพวกเขาให้เรียกใช้คำสั่ง Curl ด้านล่าง
curl -- location -- request GET 'https://YOUR_LAMBDATEST_USERNAME:[email protected]/app/data?type=ios&level=user'แสดงด้านล่างคือการตอบสนองต่อคำขอ CURL ด้านบน
{ "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"
} 'แสดงด้านล่างคือการตอบสนองต่อคำขอ CURL ด้านบน
{ "message" : "Deleted successfully." }นั่นคือทั้งหมด! ในกรณีที่คุณมีคำถามใด ๆ หรือต้องการข้อมูลเพิ่มเติมใด ๆ คุณสามารถติดต่อได้ที่ การสนับสนุนการแชท 24x7 ของเราหรือส่งจดหมายถึงเราโดยตรงที่ [email protected]
Lambdatest เสนอตาราง Appium Automation ออนไลน์เพื่อดำเนินการอัตโนมัติแอพ กริด Appium ออนไลน์มีอยู่ในกริดท้องถิ่น, BrowserStack, Saucelabs และ Lambdatest ดังนั้นคุณสามารถโยกย้ายสคริปต์ Appium Automation ในปัจจุบันของคุณได้อย่างง่ายดาย (หรือห้องสวีท) จากกริดท้องถิ่น, ห้องปฏิบัติการซอสหรือ BrowserStack ไปยัง Lambdatest
ในเอกสารนี้เราจะดูวิธีการใช้ประโยชน์จาก Lambdatest Cloud สำหรับแอพอัตโนมัติและย้ายสคริปต์ทดสอบของคุณ (หรือชุดทดสอบ) จากกริดในท้องถิ่นของคุณห้องแล็บซอสหรือ BrowserStack คุณสามารถใช้ความสามารถที่ต้องการของ Lambdatest ในการทดสอบของคุณรับรองความถูกต้องของเซสชันการทดสอบของคุณและดำเนินการทดสอบบนคลาวด์
การโยกย้ายกริดในพื้นที่ปัจจุบันของคุณการทดสอบห้องทดลองหรือซอสห้องปฏิบัติการเพื่อ Lambdatest ต้องใช้การปรับแต่งสองสามครั้งในรหัสของคุณ ในคู่มือนี้เราจะดูวิธีการใช้ประโยชน์จากความสามารถที่ต้องการของ Lambdatest ในการทดสอบของคุณรับรองความถูกต้องของเซสชันการทดสอบของคุณและดำเนินการทดสอบบนเบราว์เซอร์คลาวด์ของเรา
ในการย้ายจากกริดท้องถิ่น Browesestack หรือ Sauce Labs ไปยัง Lambdatest คุณต้องทำการเปลี่ยนแปลงบางอย่างในชุดทดสอบของคุณเช่นการตรวจสอบความสามารถความสามารถที่ต้องการ ฯลฯ
ประการแรกคุณต้องเปลี่ยนการรับรองความถูกต้องในการตั้งค่าการกำหนดค่าของชุดทดสอบของคุณ สำหรับการเรียกใช้การทดสอบบน Lambdatest Appium Grid คุณต้องมี user_name ที่ถูกต้องและ access_key เพื่อทำการทดสอบบนกริดคลาวด์ของเรา ในกรณีที่คุณไม่มีบัญชีใน Lambdatest เยี่ยมชมหน้า การสมัคร Lambdatest และสร้างบัญชีใหม่
ต่อไปนี้คือการเปลี่ยนแปลงในพารามิเตอร์:
คุณสามารถค้นหา Username และ Access Key ใน ส่วนโปรไฟล์ Lambdatest ของ แดชบอร์ดอัตโนมัติ

เมื่อย้ายจาก BrowserStack หรือ Saucelabs ไปยัง Lambdatest คุณต้องทำการเปลี่ยนแปลงต่อไปนี้ในรหัสที่มีอยู่:
นี่คือการเปรียบเทียบแบบเคียงข้างกันของแต่ละฟิลด์ที่เราได้เน้นด้านบน:
| คุณสมบัติ | พิมพ์ | อ่านหนังสือ | Saucelabs | Lambdatest |
|---|---|---|---|---|
| ชื่อผู้ใช้ | สาย | ชื่อผู้ใช้เพื่อเข้าถึง Appium Grid บน BrowserStack | ชื่อผู้ใช้เพื่อเข้าถึงกริด appium บนห้องทดลองซอส | ชื่อผู้ใช้เพื่อเข้าถึง Appium Grid บน Lambdatest |
| AccessKey | สาย | AccessKey to Access Appium Grid บน BrowserStack | AccessKey to Access Appium Grid บน Sauce Labs | AccessKey to Access Appium Grid บน Lambdatest |
| URL ฮับ | สาย | @hub-cloud.browserstack.com/wd/hub | ondemand.us-west-1.saucelabs.com/wd/hub | @hub.lambdatest.com/wd/hub |
สำหรับการใช้งานที่ใช้งูเหลือมนี่คือการเปลี่ยนแปลงในสคริปต์สำหรับกระบวนการตรวจสอบสิทธิ์
อ่านหนังสือ
userName = "BrowserStack_UserName"
accessKey = "BrowserStack_AccessKey"Saucelabs
userName = "SAUCE_USERNAME"
accessKey = "SAUCE_ACCESS_KEY"Lambdatest
userName = "LambdaTest_UserName"
accessKey = "LambdaTest_AccessKey"ตอนนี้คุณต้องปรับเปลี่ยน URL ฮับในการตั้งค่าการกำหนดค่าของชุดทดสอบของคุณ URL ฮับเป็นประเภทสตริงและระบุตำแหน่งฮับที่การทดสอบ Appium จะถูกกำหนดเส้นทางเพื่อดำเนินการ
สำหรับการใช้งานที่ใช้งูเหลือมนี่คือการเปลี่ยนแปลงในสคริปต์สำหรับ URL ฮับ
อ่านหนังสือ
@hub-cloud.browserstack.com/wd/hub
Saucelabs
@ondemand.us-west-1.saucelabs.com/wd/hub
Lambdatest
@mobile-hub.lambdatest.com/wd/hub
ตัวสร้างขีดความสามารถช่วยให้คุณสามารถระบุความสามารถที่ต้องการ (หรือความสามารถ) ซึ่งเป็นตัวเลือกการกำหนดค่าที่ช่วยให้คุณระบุสิ่งต่อไปนี้:
คุณยังสามารถเลือกตัวเลือกขั้นสูงอื่น ๆ ที่มีอยู่ในเครื่องกำเนิดความสามารถของ Lambdatest
สำหรับการย้ายถิ่นเราได้ทำการทดสอบ Appium ที่ใช้ Java ด้านล่างนี้เป็นภาพหน้าจอของเครื่องกำเนิดความสามารถของ BrowserStack และ Lambdatest



การเปรียบเทียบความสามารถที่เกิดจากเครื่องกำเนิดความสามารถของ BrowserStack และ Lambdatest:
| ความสามารถ | อ่านหนังสือ | Saucelabs | Lambdatest |
|---|---|---|---|
| อุปกรณ์ | อุปกรณ์ | ชื่อ Devicename | ชื่อ Devicename |
| ระบบปฏิบัติการ | os_version | การทำแพลตฟอร์ม | การทำแพลตฟอร์ม |
ต่อไปนี้เป็นภาพรวมของการเปรียบเทียบความสามารถที่ต้องการสำหรับภาษา Java:
อ่านหนังสือ
//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" ) ;ลองดูตัวอย่างที่แสดงกระบวนการโยกย้ายทั้งหมด สถานการณ์การทดสอบคือการเปิดแอพ Wikipedia ที่ค้นหาคำว่า 'Lambdatest' การทดสอบต่อไปนี้ทำงานบน Google Pixel 3 Running 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)
ลองวิเคราะห์สิ่งที่เปลี่ยนแปลงจากมุมมองการใช้งาน
อ่านหนังสือ
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 )เราได้พูดคุยเกี่ยวกับวิธีการโยกย้ายจาก Sauce Labs หรือ BrowserStack ไปยัง Lambdatest มาสำรวจวิธีการโยกย้ายจากกริดท้องถิ่นไปยังกริด Appium บนคลาวด์
ความสามารถที่ต้องการของ Appium คือคอลเลกชันของคู่คีย์-ค่าที่ห่อไว้ในวัตถุ JSON คู่คีย์-ค่าเหล่านี้ขอเซิร์ฟเวอร์ Appium สำหรับเซสชันการทดสอบอัตโนมัติที่จำเป็น
สมมติว่าคุณต้องการเรียกใช้การทดสอบแอพใน Python บน Samsung Galaxy Tab S4 ที่รัน Android 10 คุณสามารถกำหนดได้ในรูปแบบของความสามารถตามที่ระบุไว้ด้านล่าง
caps = [
{
"deviceName" : "Galaxy Tab S4" ,
"platformName" : "Android" ,
"platformVersion" : "10" ,
"build" : "Demo" ,
},
]ในการเริ่มต้นให้เปลี่ยนการรับรองความถูกต้องในการตั้งค่าการกำหนดค่าของชุดทดสอบของคุณ ในการเรียกใช้การทดสอบบน Lambdatest Appium Grid คุณต้องใช้ชื่อผู้ใช้และรหัสการเข้าถึงที่ถูกต้อง หากคุณทำการทดสอบบนกริดในพื้นที่แล้วคุณจะต้องปรับเปลี่ยนสคริปต์ทดสอบของคุณเพื่อเริ่มต้นไดรเวอร์ Appium พร้อมกับความสามารถที่คุณต้องการ
ส่งผ่านความสามารถไปยัง @hub.lambdatest.com/wd/hub พร้อมรายละเอียดการตรวจสอบสิทธิ์ Lambdatest ของคุณและคุณทำเสร็จแล้ว นี่คือสคริปต์ทดสอบ 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 ()นั่นคือทั้งหมด! ในกรณีที่คุณมีคำถามใด ๆ หรือต้องการข้อมูลเพิ่มเติมใด ๆ คุณสามารถติดต่อได้ที่ การสนับสนุนการแชท 24x7 ของเราหรือส่งจดหมายถึงเราโดยตรงที่ [email protected]
เยี่ยมชมลิงค์ต่อไปนี้เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับคุณสมบัติการตั้งค่าและการสอนของ Lambdatest และการสอนเกี่ยวกับระบบอัตโนมัติทดสอบการทดสอบแอพมือถือการทดสอบที่ตอบสนองและการทดสอบด้วยตนเอง
ชุมชน Lambdatest ช่วยให้ผู้คนสามารถโต้ตอบกับผู้ที่ชื่นชอบเทคโนโลยีได้ เชื่อมต่อถามคำถามและเรียนรู้จากคนที่มีความเชี่ยวชาญด้านเทคโนโลยี อภิปรายแนวปฏิบัติที่ดีที่สุดในการพัฒนาเว็บการทดสอบและ DevOps กับมืออาชีพจากทั่วโลก?
หากต้องการอัปเดตต่อไปด้วยคุณสมบัติล่าสุดและส่วนเสริมผลิตภัณฑ์โปรดไปที่ Changelog
Lambdatest เป็นแพลตฟอร์มการทดสอบชั้นนำและแพลตฟอร์ม orchestration ที่รวดเร็วเชื่อถือได้ปรับขนาดได้และปลอดภัย ช่วยให้ผู้ใช้สามารถเรียกใช้การทดสอบทั้งคู่ด้วยตนเองและโดยอัตโนมัติของเว็บและแอพมือถือในเบราว์เซอร์ที่แตกต่างกันกว่า 3,000 เบราว์เซอร์ระบบปฏิบัติการและชุดอุปกรณ์จริง การใช้ Lambdatest ธุรกิจสามารถรับรองความคิดเห็นของนักพัฒนาได้เร็วขึ้น องค์กรกว่า 500 คนและผู้ใช้ + + + กว่า 130 ประเทศขึ้นอยู่กับ Lambdatest สำหรับความต้องการการทดสอบของพวกเขา
