接上篇
在AppiumTest.java中:
package com.test.demo2;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
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.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.io.File;
import java.net.URL;
public class AppiumTest{
private AndroidDriver driver; //在这里定义AndroidDriver,这个在使用不同的jar包下情况是不一样的
@Before
public void setUp() throws Exception{
//本地安装apk包的文件路径设置
File classpathRoot = new File(System.getProperty("user.dir"));
File appDir = new File(classpathRoot,"apps");
File app = new File(appDir, "demo2.apk");
System.out.println("Setting path"); //在一些关键步骤下加入控制台输出语句可以方便调试
//设置自动化相关参数
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("unicodeKeyboard", "True"); //支持中文输入
capabilities.setCapability("resetKeyboard", "True"); //重置输入法到原有状态
capabilities.setCapability("deviceName", "GT-NXXXX"); //手机名
capabilities.setCapability(CapabilityType.BROWSER_NAME, ""); //使用的浏览器,app可忽略
// 设置安卓系统版本
capabilities.setCapability("platformVersion", "4.4.2"); //测试机的Android版本
capabilities.setCapability("platformName", "Android"); //测试机是Android还是IOS
// 设置apk路径
capabilities.setCapability("app", app.getAbsolutePath());
// 设置app的主包名和主类名
capabilities.setCapability("appPackage","com.example.demo2"); //apk的project名
capabilities.setCapability("appActivity", ".MainActivity"); //设置启动Activity,注意前面的点不要落下了,也可以写成capabilities.setCapability("appWaitActivity", "com.example.demo2.MainActivity");
capabilities.setCapability("autoWebview", "true"); //支持自动切换webview
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities); //这是appium的服务器地址
System.out.println("initializing is finished");
}
//测试用例编写
@Test
public void addContact(){
Set contextNames = driver.getContextHandles();
for (String contextName : contextNames) {
System.out.println(contextName); // 用于返回被测app是NATIVE_APP还是WEBVIEW,如果两者都有就是混合型App
}
driver.context("WEBVIEW_com.example.demo2"); //注1
driver.findElement(By.id("text1")).sendKeys("admin");
driver.findElement(By.id("bt1")).click();
}
//运行完成后
@After
public void tearDown() throws Exception{
driver.quit(); //运行完后会自动退出apk
}
}
注1:使用context方法切换至webview模式,上一步得到的WEBVIEW的名字,其实就是“WEBVIEW_”加上demo2.apk中的测试的包名,网上有用switch切换的,但是我的版本的话switch无法切换,而是要用context才行。试了下用Android6.0.1的机子,每次都是卡在这一步上,目前还没找到解决方法,Android6.0.1的话在上一步中可以检测