Study:基于Selenium进行Android客户端自动化测试的例子。
16lz
2021-01-24
注意:此处省略ADB和Node.js的配置。
代码示例:
package com.hisky.seleniumTest;import java.io.BufferedReader;import java.io.File;import java.io.IOException;import java.io.InputStreamReader;import java.net.MalformedURLException;import java.net.URL;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.remote.CapabilityType;import org.openqa.selenium.remote.DesiredCapabilities;import org.openqa.selenium.remote.RemoteWebDriver;/** * * @author zhenglin.yang * */public class AndroidTest {private static WebDriver driver;public static void main(String[] args) {killProcessor("node.exe");killProcessor("adb.exe");startAppuim();launchApp();clickTest();}private static void clickTest() {try {driver.findElement(By.name("Storage")).click();Thread.sleep(1000);driver.findElement(By.name("Backup")).click();Thread.sleep(1000);driver.findElement(By.name("Locate")).click();Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}private static void launchApp() {File classPath = new File(System.getProperty("user.dir"));File app = new File(classPath, "spark-normal-36.98.apk");DesiredCapabilities capabilities = new DesiredCapabilities();capabilities.setCapability("device", "Android");capabilities.setCapability(CapabilityType.VERSION, "4.4.2");capabilities.setCapability(CapabilityType.BROWSER_NAME, "");capabilities.setCapability(CapabilityType.PLATFORM, "Windows");capabilities.setCapability("app", app.getAbsolutePath());capabilities.setCapability("app-package", "com.asurion.android.spark");capabilities.setCapability("app-activity", "com.asurion.android.setup.activity.ZeroActivity");capabilities.setCapability("app-wait-activity", "com.asurion.android.common.ui.actionbar.MainActionBarActivity");capabilities.setCapability("newCommandTimeout", 1200);try {driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);} catch (MalformedURLException e) {e.printStackTrace();}System.out.println("launching new activity");}private static void startAppuim() {List<String> cmdLine = new ArrayList<String>(Arrays.asList(new String[] { "cmd.exe", "/C", "start", "node", "D:/java/eclipse-automation/Appium/node_modules/appium", "--no-reset" }));ProcessBuilder pb = new ProcessBuilder(cmdLine);try {pb.start();} catch (IOException e) {e.printStackTrace();}try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("node start");}private static void killProcessor(String processName) {try {Process p = Runtime.getRuntime().exec(System.getenv("windir") + "\\system32\\tasklist.exe");BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));String line = null;while ((line = br.readLine()) != null) {if (line.indexOf(processName) != -1) {String cmd = "taskkill /F /IM " + processName;Runtime.getRuntime().exec(cmd);System.out.println("killing processor:" + processName);}}br.close();} catch (Exception e) {e.printStackTrace();}}}
注意:
1、Android客户端放在项目路径下:
D:\java\workspaces\myworkspaces\seleniumTest-0.0.1-SNAPSHOT\spark-normal-36.98.apk
2、Android手机需要设置屏幕始终是亮的状态。
更多相关文章
- 使用ScheduledExecutorService延时关闭一个全屏的对话框
- Android(安卓)APP拉起小程序、分享小程序、小程序打开APP
- zxin android客户端二维码框问题
- Android.mk 代码注释
- Android开发常用经典代码段集锦
- Windows下载Android源码
- get方式和post方式的请求
- 用Socket实现PC和手机的文件传输
- Google VR for Android(安卓)- Getting Started(SDK)