appium主线分析

2017-07-07  本文已影响166人  yangzai

android自动化框架对比

目前较热门的开源框架有:android APIs提供的Instrumentation类、MonkeyRunner、Robotium、Appium、UIAutomator等

1.Instrumentation
优点:

缺点:

2.Robotium
优点:

缺点:

3.Monkeyrunner
优点:

缺点:

4.UIAutomator
优点:

缺点:

位置:/system/framework/uiautomator.jar

5.Appium
优点:

缺点:

对比图:



Appium原理简述

Google为Android开发了自己的自动化测试框架 - UIAutomator,只支持Java语言。

Apple为iOS开发了自己的自动化测试框架,在Xcode里,叫做UIAutomation,只支持JavaScript语言。

如果你只做Android的自动化测试,那么UIAutomator也可以。

如果你只做iOS的自动化测试,那么UIAutomation也足够了。

如果你想既做Android的自动化测试,又做iOS的自动化测试,那么Appium就显得难能可贵了。

Appium的开发者认为,自动化测试,不应该限定特定的语言,也不应该限定特定的框架。

Appium几乎支持任何语言 - Java,Python,Ruby,PHP,C#,JavaScript等等。

使用Appium可以测试Android,也可以测试iOS,而且大部分代码都可以公用。

IOS 原理图

Android原理图

Appium官网


appium主线分析:

创建driver 并启动服务端:



创建一个session



处理一个request

java-client如何发送一套请求:

创建一个session

new AndroidDriver(url, capabilities);

public AppiumDriver(URL remoteAddress, Capabilities desiredCapabilities) {
    this(new AppiumCommandExecutor(MobileCommand.commandRepository, remoteAddress),
        desiredCapabilities);
}

RemoteWebDriver 中 startSession

protected void startSession(Capabilities desiredCapabilities,
  Capabilities requiredCapabilities) {
....
Response response = execute(DriverCommand.NEW_SESSION, parameters);

....

sessionId = new SessionId(response.getSessionId());

}

与客户端建立连接

启动客户端

手机端的server

    public class Bootstrap extends UiAutomatorTestCase {
 
  public void testRunServer() {
    Find.params = getParams();
    boolean disableAndroidWatchers = Boolean.parseBoolean(getParams().getString("disableAndroidWatchers"));
    boolean acceptSSLCerts = Boolean.parseBoolean(getParams().getString("acceptSslCerts"));
 
    SocketServer server;
    try {
      server = new SocketServer(4724);
      server.listenForever(disableAndroidWatchers, acceptSSLCerts);
    } catch (final SocketServerException e) {
      Logger.error(e.getError());
      System.exit(1);
    }
 
  }
}
QQ图片20180129192831.jpg
上一篇 下一篇

猜你喜欢

热点阅读