- 用AS创建一个空activity的工程(比如project名叫MyBaiduTest)
- 在工程中new module一个java Library模块(比如新建的module名叫SearchAndClick)
- 在新建模块的libs目录下拷入 commons-lang3-3.1.jar 、java-client-7.3.0.jar、selenium-server-standalone-3.141.59.jar这三个jar库
- 模块的build.gradle中加入junit依赖,如下:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'junit:junit:4.12'
}
-
然后执行同步,如下
-
在模块目录下创建一个文件夹用于存放待测试应用,如下:
完善用例代码,import 必要的类并声明一个AndroidDriver变量,例如:
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
public class SearchAndClick {
private AndroidDriver<AndroidElement> driver;
...
- 完善用例代码,在@Before 函数中做初始化,例如:
@Before
public void init() {
File classpathRoot = new File(System.getProperty("user.dir"));
// 获取apps文件,前面测试应用所存放的目录
File appDir = new File(classpathRoot, "/apps/");
// 获取apk文件
File app = new File(appDir, "baidu.apk");
DesiredCapabilities capabilities = new DesiredCapabilities();
// 设备名,这里是模拟器的设备名
capabilities.setCapability("deviceName", "127.0.0.1:12");
// 系统平台版本
capabilities.setCapability("platformVersion", "7.1.2");
capabilities.setCapability("app", app.getAbsolutePath());
// 设置被测应用包名
capabilities.setCapability("appPackage", "com.baidu.searchbox");
// app的入口启动activity
capabilities.setCapability("appActivity", ".SplashActivity");
// 连接appium启动相应app
try {
driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
} catch (MalformedURLException e) {
e.printStackTrace();
}
System.out.println("App is launched!");
}
- 完善用例代码,在@After函数中善后
@After
public void end() throws InterruptedException{
driver.quit();
}
- 完善用例代码,在@Test函数中实现具体用例
@Test
public void start() throws InterruptedException {
Thread.sleep(2000);
// 点击"同意并继续"
WebElement el = driver.findElement(By.xpath(".//*[@text='\u540c\u610f\u5e76\u7ee7\u7eed']"));
el.click();
// 一直点击权限框"允许" 直到没有弹框
boolean finished = false;
do {
try {
el = driver.findElement(By.xpath(".//*[@text='\u5141\u8bb8']"));
el.click();
} catch (NoSuchElementException e) {
finished = true;
}
}while(!finished);
System.out.println("App is done!");
}
-
用例代码完成后,选中这个模块并通过Make Module来编译这个模块,如下:
-
然后对选中的模块或测试类文件就可以执行run测试了,如下: