引言: 加入组织有一段时间,一直未交作业,今天将前段时间学习的 Appium 环境搭建步骤整理汇总下(高手请绕道)。
1.下载 appium for windows 安装包
最新安装包为 AppiumForWindows-1.3.4.1,点击,进入 appium 程序后,点击"launch"按钮;
2.启动 Android AVD
点击 start.等待虚拟机加载,这个过程很漫长,几分钟左右;
3.测试工程文件搭建
1)eclipse ,加载 selenium、appium client、junit 包。
2)新建一个 java junit 工程文件,用于写测试代码;
3)放置 apk 到指定目录:在工程文件夹下新建一个 apps 子文件夹,将待测 apk 放入其中,以 contactmanager.apk 为例;
4)查找 apk 的 package 和 activity 属性;
5)定位 APK 的控件元素;
以上两个步骤中,package 和控件元素的 ID 可以采用 uiautomatorviewer.bat 工具进行捕捉,activity 可以采用反编译工具获取。
driver 定位控件元素有多个途径,在 appnium 使用中本人仅会使用 by.id 这个方法,可以将 uiautomatorviewer.bat 工具捕捉的 “resource-id” 属性值整个 copy 过来。
具体请见乙醇大神博客:http://www.cnblogs.com/nbkhic/p/3806886.htmlhttp://www.cnblogs.com/nbkhic/p/3806951.html;
4.代码完成后,启动 junit 工程文件运行,就可以对 APK 的 UI 控件自动测试了,启动过程需要 2 分钟左右
5.测试源码
package androidTest;
//import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.*;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import io.appium.java_client.android.AndroidDriver;
public class Test1 {
private AndroidDriver driver;
@BeforeClass
public static void setUpBeforeClass() {
}
@Before
public void setUp() throws MalformedURLException{
File classpathRoot = new File(System.getProperty("user.dir"));
File appDir = new File(classpathRoot, "apps"); //对应“ 在工程文件夹下新建一个apps子文件夹,将待测apk放入其中”
File app = new File(appDir, "ContactManager.apk"); //待测APK名称
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName","Android Emulator"); //模拟器
//capabilities.setCapability("deviceName","Android"); //真机
capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
capabilities.setCapability(CapabilityType.VERSION, "4.4"); //Android版本,本人尝试过5.0失败
capabilities.setCapability(CapabilityType.PLATFORM, "WINDOWS");
capabilities.setCapability("app", app.getAbsolutePath());
capabilities.setCapability("app-package", "com.example.android.contactmanager"); //定位APK的Package
capabilities.setCapability("app-activity", ".ContactManager"); //定位APK的Activity
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}
@After
public void tearDown() {
driver.quit();
}
@Test
public void test() throws InterruptedException {
WebElement el = driver.findElement(By.name("Add Contact"));
el.click();
WebElement e3 = driver.findElement(By.id("com.example.android.contactmanager:id/contactNameEditText"));
e3.sendKeys("wangyang");
WebElement e4 = driver.findElement(By.id("com.example.android.contactmanager:id/contactPhoneEditText"));
e4.sendKeys("18872573204");
WebElement e5 = driver.findElement(By.id("com.example.android.contactmanager:id/contactEmailEditText"));
e5.sendKeys("123@qq.com");
WebElement e6 = driver.findElement(By.id("com.example.android.contactmanager:id/contactSaveButton"));
e6.click();
Thread.sleep(10000); //此段延时为了更好地看到测试界面效果,可省去
}
}