手机自动化测试(5)--Appium环境搭建、可能遇到的问题以及附属工具
2015-11-03 16:15
561 查看
1、搭建Android环境http://blog.csdn.net/jlminghui/article/details/39582895注:需要设置系统变量“ANDROID_HOME”。2、安装Node.jshttp://www.nodejs.org/download/下载相关操作系统的版本安装过程,一路“Next”。3、安装Appium(1)下载地址:http://appium.io/ 下载完毕后解压到pc本地,将压缩包里有appium.cmd文件的路径设置到环境变量path中。(2)进入命令行,输入appium-doctor 另外也可在线安装(可选,网络不好还是选上面的好些)(1)进入命令行(2)输入命令:npm install -g appium注:翻墙下载比较靠谱(3)等待更新完毕(4)安装后验证:appium-doctor4、创建虚拟机或使用实际设备创建一个4.4.2的虚拟机不熟悉这块的朋友参考:http://blog.csdn.net/jlminghui/article/details/395828955、创建Java工程(Eclipse) 推荐使用maven工程,直接可以maven导入。方法如下1.创建一个maven工程2.百度maven中央仓库,在中央仓库搜索selenium、appium、junit,找到对应的依赖加入到pom.xml,就可以不用再去对应的官网下载包了,又麻烦又慢
<dependencies> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-server</artifactId> <version>2.48.2</version> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.48.2</version> </dependency> <dependency> <groupId>io.appium</groupId> <artifactId>java-client</artifactId> <version>3.2.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies>一般方法(1)导入Selenium类库http://selenium-release.storage.googleapis.com/2.44/selenium-java-2.44.0.ziphttp://selenium-release.storage.googleapis.com/2.44/selenium-server-standalone-2.44.0.jar(确认2014.11.14有效,如无效请访问http://docs.seleniumhq.org/download/ 进行下载 )注:需要导入两个,一个是客户端,一个是服务端,服务端库不导入会导致运行时报错。(2)导入Appium类库https://search.maven.org/remotecontent?filepath=io/appium/java-client/1.2.1/java-client-1.2.1.jar (确认2014.11.14有效,如无效请访问http://appium.io/downloads.html 进行下载 )注:此处如果选择下载最新的2.0以上的版本,会导致编译
new
AppiumDriver时报错。解决办法见:
http://blog.csdn.net/zhubaitian/article/details/397178896、运行Appium示列(1)下载示例程序https://github.com/appium/sample-code/tree/master/sample-code/apps/ContactManager上面链接中下载ContactManager.apk(点击下方的RAW按钮下载)并将该apps放到当前项目的apps目录下(目录自行创建)(2)下载示例程序测试地址:https://github.com/appium/sample-code/tree/master/sample-code/examples/java/junit/src/test/java/com/saucelabs/appiumjava文件为“AndroidContactsTest.java”(点击下方的RAW按钮下载)内容经过更改如下[java] viewplaincopypackage com.Demo; import io.appium.java_client.AppiumDriver; 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; import java.util.List; public class AppDemo { private AppiumDriver driver; @Before public void setUp() throws Exception { // set up appium File classpathRoot = new File(System.getProperty("user.dir")); File appDir = new File(classpathRoot, "apps"); File app = new File(appDir, "ContactManager.apk"); DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(CapabilityType.BROWSER_NAME, ""); capabilities.setCapability("platformName", "Android"); capabilities.setCapability("deviceName","Android Emulator"); capabilities.setCapability("platformVersion", "4.4"); capabilities.setCapability("app", app.getAbsolutePath()); capabilities.setCapability("appPackage", "com.example.android.contactmanager"); capabilities.setCapability("appActivity", ".ContactManager"); driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); } @After public void tearDown() throws Exception { driver.quit(); } @Test public void addContact(){ WebElement el = driver.findElement(By.name("Add Contact")); el.click(); List<WebElement> textFieldsList = driver.findElementsByClassName("android.widget.EditText"); textFieldsList.get(0).sendKeys("Some Name"); textFieldsList.get(2).sendKeys("Some@example.com"); driver.swipe(100, 500, 100, 100, 2); driver.findElementByName("Save").click(); } } (3)启动android4.4.2虚拟机(4)命令行启动后输入:appium (5)appium启动到对应设备:appium -a 127.0.0.1 -p4723 -Uemulator-5554 (-a表示ip,-p表示端口,默认都是4723,-U表示设备的udid,可以通过adb devices查看)(6)项目右键>“Run As”>“JUnit Test”(选择Eclipse JUnit Launcher) 以上步骤确认可以运行成功,但由于笔者也是刚接触Appium,可能存在遗漏,也请大家帮忙指出,另外也可以使用maven和相关Eclipse插件会更方便些,网上例子很多可自行查找。以下是在phonegap平台上测试app遇到的一些问题,有遇到的同学可以看看Appium遇到问题:问题一:问题rg.openqa.selenium.remote.UnreachableBrowserException:Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.解决办法:(1)启动appium(2)运行cmd 输入 adb devices 查看UDID 如图:(3)再在cmd中输入 appium -a 127.0.0.1 -p4723 -Uemulator-5554 (-a表示ip,-p表示端口,默认都是4723,-U表示设备的udid 可以通过appium -h查看更多命令)(4)如果如下图所示 就表示 appium服务启动成功了,注意这个窗口不要关闭 因为这是appium的服务 关了就关了服务,后面过程无法执行,而且这个窗口也是 日志输出的窗口用于排错。问题二:问题:org.openqa.selenium.SessionNotCreatedException: A new session could not be created.(Original error: Device ZX1C622BU3 was not in the list of connected devices)(WARNING: The server did not provide any stacktrace information)解决办法:可能手机驱动未安装成功,虽然在adb devices中可以正常查看到devices问题三:问题:org.openqa.selenium.SessionNotCreatedException: A new session could not be created. (Original error: Waited 20 secs for selendroid server andit never showed up)解决办法:查看包的签名的和Activity例如:APP从I5版本后启动界面的capabilities.setCapability("appActivity", ".CordovaApp");从I5版本后Acitivity变成了MainActivitycapabilities.setCapability("appActivity",".MainActivity");// 被测app的Activity类问题四:org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. (WARNING: The server did not provideany stacktrace information)解决方法:查看设备上是否安装Selendroid,或者升级SelendroidIOS问题五:org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. (WARNING: The server did not provideany stacktrace information)解决办法:IOS_webkit_debug_proxy –c –[Udid] -d问题六error: Couldn't start Appium REST http interface listener. Requested portis already in use. Please make sure there's no other instance of Appium running already.因为端口被node占用,可以用如下退出node找出PID命令::netstat -ano|findstr "7922" (这个4723是被占用的端口,我们需要先找该占用该端口程序的PID)停止PID命令:taskkill/pid 8828 /f工具一 SDK\tools下的:uiautomatorviewer 作用:查看元素ID、Name、坐标工具二 SDK\build-tools\23.0.0下的:aapt 作用:查看启动包名和首页ACTIVITY
相关文章推荐
- 收集android上开源的酷炫的交互动画和视觉效果:Interactive-animation
- Android修改ActionBar背景颜色和标题,菜单颜色 (清晰)
- Android Studio创建Genymotion模拟器失败解决办法 win10
- android中布局文件中 layout_weight 的属性详解
- JS判断客户端是否是iOS或者Android
- ios NSNotificationCenter 收到通知后的执行线程
- Cg shader for Unity-specific skybox
- Swift语言中的函数学习教程
- Android仿快递物流时间轴的代码实现
- Android捕获全局异常
- Android捕获全局异常
- org.hibernate.MappingException:
- object-C NSDate
- Android编程实现3D滑动旋转效果的方法
- 动态添加布局(个人觉得还算不错,查了很多资料,网上没有我要的,所以写出来)
- Swift 基础入门 协议/闭包
- org.hibernate.TransientObjectException:
- swift 快速奔跑的兔几 本节的内容是:闭包儿和操作队列
- 我的记事本项目之路(三)
- iOS中 RGB与HSV的相互转换