การทดสอบมือถือ - Selendroid Framework
Selendroid เป็นกรอบการทดสอบอัตโนมัติสำหรับการทดสอบแอปพลิเคชัน Android เนทีฟและไฮบริด การทดสอบ Selendroid เขียนโดยใช้ไคลเอนต์ Selenium Webdriver API
ประโยชน์ของ Selendroid
เข้ากันได้กับ JSON Wire Protocol / Selenium 3 Ready
ไม่จำเป็นต้องปรับเปลี่ยนแอปที่อยู่ระหว่างการทดสอบเพื่อทำให้เป็นอัตโนมัติ
การทดสอบเว็บบนอุปกรณ์เคลื่อนที่โดยใช้แอพ webview ไดรเวอร์ Android ในตัว
แนวคิดเดียวกันสำหรับการทำให้แอปเนทีฟหรือไฮบริดโดยอัตโนมัติ
องค์ประกอบ UI สามารถพบได้ตามประเภทตัวระบุตำแหน่งต่างๆ
รองรับท่าทางสัมผัส: Advanced User Interactions API
อีมูเลเตอร์ที่มีอยู่จะเริ่มทำงานโดยอัตโนมัติ
Selendroid รองรับการเสียบอุปกรณ์ฮาร์ดแวร์แบบร้อนแรง
การรวมแบบสมบูรณ์เป็นโหนดใน Selenium Grid สำหรับการปรับขนาดและการทดสอบแบบขนาน
รองรับ API เป้าหมายของ Android หลายรายการ (10 ถึง 19)
ตัวตรวจสอบในตัวเพื่อลดความซับซ้อนในการพัฒนากรณีทดสอบ
Selendroid สามารถขยายขณะรันไทม์ด้วยส่วนขยายของคุณเอง
Selendroid สามารถโต้ตอบกับอุปกรณ์ Android หลายเครื่อง (อีมูเลเตอร์หรืออุปกรณ์ฮาร์ดแวร์) ในเวลาเดียวกัน
ข้อเสียของ Selendroid
ข้อเสียเปรียบของเครื่องมือนี้คือมันค่อนข้างช้าและในบางเครื่องที่มี RAM น้อยกว่า 4GB จะไม่สามารถใช้งานได้
วิธีใช้ Selendroid
Step 1- ข้อกำหนดเบื้องต้นในการใช้ Robotium คือ Java SDK (ขั้นต่ำ 1.6) หากคุณไม่ได้ติดตั้ง Java ในระบบของคุณให้ทำตามขั้นตอนที่ระบุด้านล่าง
ดาวน์โหลด JDK และ JRE จากOracle JavaSE
ยอมรับข้อตกลงใบอนุญาต
ติดตั้ง JDK และ JRE
ตั้งค่าตัวแปรสภาพแวดล้อมตามที่แสดงในภาพหน้าจอด้านล่าง
Step 2- ดาวน์โหลด Android Studio จากSDK Android (อาจต้องใช้เวลาเนื่องจากขนาดของไฟล์)
- ดับเบิลคลิกที่ exe และเรียกใช้โปรแกรมติดตั้ง
- ดำเนินการต่อด้วยตัวเลือกเริ่มต้นทั้งหมด
- ตั้งค่า ANDROID_HOME
Step 3- ดาวน์โหลดไฟล์ Selenium jar และทดสอบแอปพลิเคชันจากSelendroid
- ดาวน์โหลดไฟล์ซีลีเนียม jar และแอปทดสอบ
- วางไว้ในโฟลเดอร์ใดก็ได้เช่น D: \ SelendroidJars
Step 4 - อุปกรณ์ทางกายภาพพร้อมสาย USB
ตรวจสอบให้แน่ใจว่าอุปกรณ์เชื่อมต่อกับเวิร์กสเตชันด้วยสาย USB
ตรวจสอบให้แน่ใจว่าได้เปิดใช้งานโหมดดีบัก USB (ภายใต้การตั้งค่า→ตัวเลือกสำหรับนักพัฒนา)
ทดสอบแอปด้วย Selendroid
ในการทดสอบแอปโดยใช้ Selendroid ให้ทำตามขั้นตอนด้านล่าง -
Step 1 - ติดตั้ง Eclipse
Step 2 - สร้างโครงการ Java
Step 3 - เพิ่มไฟล์ Selendroid jar ที่ดาวน์โหลดไปยังโปรเจ็กต์ที่สร้างขึ้นใหม่
Step 4 - เพิ่มไฟล์ Selenium jar ที่ดาวน์โหลดไปยังโปรเจ็กต์ที่สร้างขึ้นใหม่
Step 5 - กำหนดค่า testNG ใน Eclipse
Step 6- เชื่อมต่ออุปกรณ์มือถือกับระบบโดยใช้สาย USB ตั้งค่าโหมดดีบัก USB จากตัวเลือกของผู้พัฒนาภายใต้การตั้งค่า
Step 7- เรียกใช้เซิร์ฟเวอร์ Selendroid เปิดพรอมต์คำสั่งและเขียนรหัสต่อไปนี้แล้วกด Enter -
java -jar selendroid-standalone-0.17.0-with-dependencies.jar -app selendroid-test-app-0.17.0.apk
Selendroid-standalone จะเริ่มเซิร์ฟเวอร์ http บนพอร์ต 4444 และจะสแกนอุปกรณ์เสมือน Android ทั้งหมด (avd) ที่ผู้ใช้สร้างขึ้น (~ / .android / avd /)
เปิดเว็บเบราว์เซอร์และไปที่: http://localhost:4444/wd/hub/status.
Step 8- สร้างโครงการ Java เพิ่มไลบรารี Selendroid Standalone, Selenium jar และ JUnit libraries ใน build path
Step 9 - สร้างแพ็คเกจภายใต้โครงการ Java
Step 10 - สร้างคลาสภายใต้แพ็คเกจและเขียนโค้ดต่อไปนี้
package selTest;
import io.selendroid.SelendroidDriver;
import io.selendroid.common.SelendroidCapabilities;
import io.selendroid.standalone.SelendroidConfiguration;
import io.selendroid.standalone.SelendroidLauncher;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.testng.Assert;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;
public class SelendroidTest {
private WebDriver driver ;
@BeforeSuite
public void setUp() throws Exception {
SelendroidConfiguration config = new SelendroidConfiguration();
config.addSupportedApp("selendroid-test-app-0.9.0.apk");
SelendroidLauncher selendroidServer = new SelendroidLauncher(config);
selendroidServer.launchSelendroid();
SelendroidCapabilities caps = new
SelendroidCapabilities("io.selendroid.testapp:0.9.0");
driver = new SelendroidDriver(caps);
}
@Test
public void selendroidTest() throws Exception {
WebElement inputField = driver.findElement(By.id("my_text_field"));
Assert.assertEquals("true", inputField.getAttribute("enabled"));
inputField.sendKeys("Selendroid");
Assert.assertEquals("Selendroid", inputField.getText());
WebElement button = driver.findElement(By.id("buttonTest"));
button.click();
button = driver.findElement(By.id("button2"));
button.click();
Thread.sleep(5000);
button = driver.findElement(By.id("startUserRegistration"));
button.click();
Thread.sleep(10000);
WebElement element = driver.findElement(By.id("label_username"));
String text = element.getText();
System.out.println(text);
element = driver.findElement(By.id("inputUsername"));
element.sendKeys("bob");
element = driver.findElement(By.id("inputEmail"));
element.sendKeys("[email protected]");
element = driver.findElement(By.id("inputPassword"));
element.clear();
element.sendKeys("test1233");
element = driver.findElement(By.id("inputName"));
element.clear();
element.sendKeys("My Name ");
element = driver.findElement(By.id("input_preferedProgrammingLanguage"));
element.click();
element = driver.findElement(By.id("text1"));
element.click();
element = driver.findElement(By.id("input_adds"));
element.click();
element = driver.findElement(By.id("btnRegisterUser"));
element.click();
element = driver.findElement(By.id("buttonRegisterUser"));
element.click();
}
@AfterSuite
public void tearDown(){
driver.quit();
}
}
Step 11 - เรียกใช้คลาสด้วยการกำหนดค่าการรัน testNG