赞
踩
各位小伙伴们,今天继续Appium框架的学习,阅读此文大约需要20分钟。希望小伙伴们认真的瞧一瞧。首先问大家一个问题:大家有没有在case里面start/stop Appium server? 如果有,是怎么实现的?
之前写过Java控制Appium server start/stop
http://www.cnblogs.com/tobecrazy/p/5118170.html
采用的是封装系统cmd,事实上Appium 依然提供通用的方法。
Appium自带的 AppiumDriverLocalService 类
AppiumDriverLocalService 可以实现各种方式启动/停止Appium Server。 然后把这些方法写到测试类的父类中,就不用每次手动启动Appium Server。
默认的启动:
service = AppiumDriverLocalService.buildDefaultService();
service.start();
采用默认端口和密码
进一步优化,封装几个常用的start Appium Server的方法
简单封装AppiumDriverLocalService实现不同的需求
- package main.java.com.dbyl.appiumServer;
-
- import java.io.File;
-
- import java.net.URL;
-
- import io.appium.java_client.service.local.AppiumDriverLocalService;
-
- import io.appium.java_client.service.local.AppiumServiceBuilder;
-
- import io.appium.java_client.service.local.flags.ServerArgument;
-
- /**
-
- * @author Young
-
- * @since 2016-11-09
-
- */
-
- public class AppiumServerUtils {
-
- public static AppiumDriverLocalService service;
-
- public static AppiumServerUtils appiumServerUtils;
-
- /**
-
- * @author young
-
- * @return
-
- */
-
- public static AppiumServerUtils getInstance() {
-
- if (appiumServerUtils == null) {
-
- synchronized (AppiumServerUtils.class) {
-
- if (appiumServerUtils == null) {
-
- appiumServerUtils = new AppiumServerUtils();
-
- }
-
- }
-
- }
-
- return appiumServerUtils;
-
- }
-
- /**
-
- * This method is for start appium use default host and IP
-
- *
-
- * @author young
-
- * @return
-
- */
-
- public URL startAppiumServerByDefault() {
-
- service = AppiumDriverLocalService.buildDefaultService();
-
- service.start();
-
- if (service == null || !service.isRunning()) {
-
- throw new RuntimeException("An appium server node is not started!");
-
- }
-
- return service.getUrl();
-
- }
-
-
-
- /**
-
- * @author Young
-
- */
-
- public void stopServer() {
-
- if (service != null) {
-
- service.stop();
-
- }
-
- }
-
-
-
- /**
-
- * @author young
-
- * @param ipAddress
-
- * @param port
-
- * @return
-
- */
-
- public URL startServer(String ipAddress, int port) {
-
- AppiumServiceBuilder builder = new AppiumServiceBuilder();
-
- builder.withIPAddress(ipAddress);
-
- builder.usingPort(port);
-
- service = AppiumDriverLocalService.buildService(builder);
-
- service.start();
-
- if (service == null || !service.isRunning()) {
-
- throw new RuntimeException("An appium server node is not started!");
-
- }
-
- return service.getUrl();
-
-
-
- }
-
-
-
- /**
-
- * @author young
-
- * @param ipAddress
-
- * @param port
-
- * @param logFile
-
- * @param arguments
-
- * @return
-
- */
-
- public URL startServer(String ipAddress, int port, File logFile, ServerArgument... arguments) {
-
- AppiumServiceBuilder builder = new AppiumServiceBuilder();
-
- builder.withIPAddress(ipAddress);
-
- builder.usingPort(port);
-
- builder.withLogFile(logFile);
-
- for (ServerArgument argument : arguments) {
-
- builder.withArgument(argument);
-
- }
-
- service = AppiumDriverLocalService.buildService(builder);
-
- service.start();
-
- if (service == null || !service.isRunning()) {
-
- throw new RuntimeException("An appium server node is not started!");
-
- }
-
- return service.getUrl();
-
- }
-
- }
在测试用例中需要这样使用
URL url = AppiumServerUtils.getInstance().startAppiumServerByDefault();
driver = new AndroidDriver<MobileElement>(url, capabilities);
执行case,发现如下问题:ANDROID_HOME 未设置,然而已经在环境变量中设置过了,原来是eclipse执行的时候,拿不到环境变量的设置。
可以在eclipse中设置环境变量eclipse ->Click on Run -> 点击 Run configurations。
这样就可以成功执行测试。
如下图:
后记
UI自动化测试没有那么好,慢慢的资本家发现纯UI自动化投入产出比太低,目前国内一线互联网公司已经把UI自动化的比重降低了许多,取而代之的是API和非功能测试,测试行业在近几年并没有什么新技术,我们现在用的东西都是换汤不换药的,大差不差。我总爱和相声行业对比,我们和相声艺人一样,老郭总说,相声的准入门槛太低,是个人都行。测试还不一样么,准入门槛太低,但这个行业你想做好,就必须要技术,业务能力都要很强。相声艺人拼到最后拼的是文化和身体,我们呢? 拼到最后拼的是技能(业务也是技能)和身体。
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….
如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入下方我的qq群大家一起讨论交流,里面也有各种软件测试资料和技术交流。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。