Selendroid是一款用于测试Android原生和混合应用程序的测试自动化框架. Selendroid测试使用Selenium Webdriver客户端API编写.
Selendroid的好处
完全兼容JSON Wire Protocol/Selenium 3 Ready.
无需修改需要测试的应用程序以实现自动化.
使用内置的Android驱动程序webview app测试移动网络.
自动化原生应用程序或混合应用程序的相同概念.
UI元素可以通过不同的定位器类型找到.
支持手势:高级用户交互API.
现有仿真器自动启动.
Selendroid支持热门插入硬件设备.
作为节点完全集成到Selenium Grid中进行扩展和并行测试.
多个Android目标API支持(10到19).
内置Inspector以简化测试用例开发.
Selendroid可以在运行时使用您自己的扩展程序进行扩展.
Selendroid可以与多个Android设备(模拟器或硬件)进行交互设备)同时.
Selendroid的缺点
这个工具的缺点是这是非常慢,在一些内存小于4GB的机器上,它是无法使用的.
如何使用Selendroid
第1步 : 使用Robotium的先决条件是Java SDK(最低1.6).如果您的系统上没有安装Java,请按照以下步骤进行操作.
从以下位置下载JDK和JRE Oracle JavaSE
接受许可协议.
安装JDK和JRE.
设置环境变量如下面的屏幕截图所示.
第2步 : 从 SDK Android 下载Android Studio(由于文件大小,需要一些时间).
双击exe并运行安装程序.
继续使用所有默认选项.
设置ANDROID_HOME.
步骤3 : 从 Selendroid 下载Selenium jar文件和测试应用程序
下载selenium jar文件和测试应用程序.
将其放入任何文件夹,即D:\ SelendroidJars.
第4步 : 带USB线的物理设备.
确保设备通过USB线连接到工作站.
确保启用USB调试模式(在setttings → Developer选项下).
使用Selendroid测试应用程序
要使用Selendroid测试应用程序,请按照下面给出的步骤 : 去;
步骤1 : 安装Eclipse.
第2步 : 创建一个Java项目.
第3步 : 将下载的Selendroid jar文件添加到新创建的项目中.
步骤4 : 将下载的Selenium jar文件添加到新创建的项目中.
步骤5 : 在Eclipse中配置testNG.
第6步 : 使用USB电缆将移动设备与系统连接.从设置下的开发人员选项中设置USB调试模式.
步骤7 : 运行Selendroid服务器.打开命令提示符并编写以下代码并按Enter :
java -jar selendroid-standalone-0.17.0-with-dependencies.jar -app selendroid-test-app-0.17.0.apk
Selendroid-standalone将在端口4444上启动一个http服务器并扫描所有Android虚拟设备( avd)用户创建了(〜/.android/avd/).
打开Web浏览器并导航到: http://localhost:4444/wd/hub/status .
第8步 : 创建Java项目;在构建路径中添加Selendroid Standalone库,Selenium jar和JUnit库.
第9步 : 在Java项目下创建包.
步骤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("test@gmail.com"); 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(); } }
步骤11 : 使用testNG运行配置运行该类.