混合型app以Appium搭建自动化测试开发环境
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了混合型app以Appium搭建自动化测试开发环境相关的知识,希望对你有一定的参考价值。
Appium
官方网址:http://appium.io/
中文社区:http://testerhome.com/
下载地址(由testerhome社区提供):http://pan.baidu.com/s/1jGvAISu#dir
1. 下载最新版本AppiumServer 1.2.0,解压后,进入目录下找到Appium.exe,运行即可,此程序作为Appnium与被测设备之间通讯的服务端
出现如下界面说明启动成功
2. 将真机连接到PC端
3. 我使用Eclipse作为开发IDE,建立一个maven工程appium-demo,在pom中引用了公司框架中的Selenium核心工程,这样可以省去添加Selenium依赖的过程
,同时在maven的中央库中找到Appium包,并引用
Appium的maven引用
GroupId:io.appium
ArtifactId:java-client
Version:1.5.0
4. 建立工程后,就可以写测试代码了,在工程中建立一个Junit Test类Test1.java,代码如下:
package com.example.hello; import io.appium.java_client.AppiumDriver; import java.io.File; import java.net.MalformedURLException; import java.net.URL; import java.util.Set; import junit.framework.TestCase; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.BlockJUnit4ClassRunner; import org.openqa.selenium.By; import org.openqa.selenium.javascriptExecutor; import org.openqa.selenium.WebElement; import org.openqa.selenium.remote.DesiredCapabilities; @RunWith(BlockJUnit4ClassRunner.class) public class Test1 extends TestCase { private AppiumDriver driver; @Before public void start() throws MalformedURLException { // 使用phonegap打包的hybrid app路径 String apppath = "D:\\\\Work\\\\codes\\\\hands\\\\hands-hello-phonegap\\\\platforms\\\\android\\\\bin\\\\HelloWorld.apk"; // 初始化AppniumDriver DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("deviceName", "NX403A");// 真机测试android设备 capabilities.setCapability("platformVersion", "4.2.2");// 真机android版本为4.2.2 capabilities.setCapability("platformName", "Android");// 真机为android系统 capabilities.setCapability("app", apppath);// 被测app apk包的位置 capabilities.setCapability("appPackage", "com.example.hello");// 被测app的Activity类所在包 capabilities.setCapability("appActivity", ".HelloWorld");// 被测app的Activity类 capabilities.setCapability("automationName", "selendroid");// 因为真机为4.2版本,所以使用selendroid // http://127.0.0.1:4723/wd/hub地址就是AppiumServer的地址 driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); } @Test public void main() { try { Set<String> contextNames = driver.getContextHandles(); for (String contextName : contextNames) { System.out.println(contextName); // 用于返回被测app是NATIVE_APP还是WEBVIEW,如果两者都有就是混合型App } Thread.sleep(5000);// 等它一会 driver.context("WEBVIEW_0");// 让appium切换到webview模式以便查找web元素 WebElement text_baidusearch = driver.findElement(By.id("word")); text_baidusearch.click();// 点击百度的搜索输入框(web元素) /* * appium不支持中文输入 参考了robotium的以js方式为元素直接设置value的做法 * 利用Selenium中Webdriver执行js方法实现中文输入 */ JavascriptExecutor jse = (JavascriptExecutor) driver; jse.executeScript("document.getElementById(‘word‘).value=‘输入法‘"); Thread.sleep(10000);// 等一会观察下效果 } catch (InterruptedException e) { e.printStackTrace(); } } @After public void stop() { driver.quit(); } }
工程结构如下
5. 保持被测设备为解锁状态,虽然Appium有一个unlock的功能,但有时不起作用,所以最好还是将锁屏关闭。运行Test1.java,得到如下结果
以上是关于混合型app以Appium搭建自动化测试开发环境的主要内容,如果未能解决你的问题,请参考以下文章
Windows下部署Appium教程(Android App自动化测试框架搭建)