Appium中部分api的使用方法,有需要的朋友可以参考下。

使用的语言是java,appium的版本是1.3.4,java-client的版本是java-client-2.1.0,建议多参考java-client-2.1.0-javadoc。

1.使用AndroidDriver,其已经继承了AppiumDriver

  1. private AndroidDriver driver;
  2.  
  3. @Before
  4. public void setUp() throws Exception {
  5. DesiredCapabilities capabilities = new DesiredCapabilities();
  6. capabilities.setCapability("deviceName", "Android Emulator");
  7. capabilities.setCapability("platformVersion", "4.4");
  8. capabilities.setCapability("platformName", "Android");
  9. capabilities.setCapability("appPackage", "com.android.settings");
  10. capabilities.setCapability("appActivity", ".Settings");
  11.  
  12. driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),
  13. capabilities);
  14. }
  15.  
  16. @After
  17. public void tearDown() throws Exception {
  18. driver.quit();
  19. }

2.截屏并保存至本地

  1. //截屏并保存至本地
  2. File screen = driver.getScreenshotAs(OutputType.FILE);
  3. File screenFile = new File("d:\\screen.png");
  4. try {
  5. FileUtils.copyFile(screen, screenFile); //commons-io-2.0.1.jar中的api
  6. } catch (IOException e) {
  7. e.printStackTrace();
  8. }

3.push文件、pull文件

  1. File file = new File("d:\\test.txt"); //test.txt内容为"test"
  2. String content = null;
  3. try {
  4. content = FileUtils.readFileToString(file);
  5. } catch (IOException e) {
  6. e.printStackTrace();
  7. }
  8.  
  9. byte[] data = Base64.encodeBase64(content.getBytes());
  10. driver.pushFile("sdcard/test.txt", data);
  11.  
  12. byte[] resultDate = driver.pullFile("sdcard/test.txt");
  13. System.out.println(new String(Base64.decodeBase64(resultDate))); //打印结果为"test"

4.

  1. //获取当前界面的activity,可用于断言是否跳转到预期的activity
  2. driver.currentActivity();

5.

  1. //打开通知栏界面
  2. driver.openNotifications();

6.

  1. //获取网络状态
  2. int status = driver.getNetworkConnection().value;
  3. System.out.println(status);
  4.  
  5. //设置网络状态
  6. driver.setNetworkConnection(new NetworkConnectionSetting(status));
  7. //或者
  8. driver.setNetworkConnection(new NetworkConnectionSetting(false, true, false));

7.

  1. //启动其他应用,跨APP
  2. driver.startActivity("com.android.camera", ".CameraLauncher");

8.

  1. //自动滑动列表
  2. driver.scrollTo("text");
  3. //或者
  4. driver.scrollToExact("text");

9.

  1. //安装APP
  2. driver.installApp(appPath);
  3.  
  4. //判断应用是否已安装
  5. driver.isAppInstalled("package name");

10.

  1. //拖动相机图标至日历图标位置
  2. new TouchAction(driver).longPress(driver.findElementByName("相机"))
  3. .moveTo(driver.findElementByName("日历")).release().perform();

11.

  1. //锁屏
  2. driver.lockScreen(2);
  3.  
  4. //判断是否锁屏
  5. driver.isLocked();

12.

  1. //发送按键事件
  2. driver.sendKeyEvent(AndroidKeyCode.HOME);

13.

  1. <span style="color:#ff0000;"> </span>
  2. //通过uiautomator定位clickable属性为true的元素并点击
  3. driver.findElementByAndroidUIAutomator("new UiSelector().clickable(true)").click();
  4.  
  5. //相同属性的元素使用List存放
  6. List<WebElement> elements = driver.findElementsByClassName("class name");
  7. elements.get(0).click(); //点击List中的第一个元素
  8. //tap,点击元素位置
  9. driver.tap(1, driver.findElementByName("日期和时间"), 0);

java appium api的更多相关文章

  1. (转载)中文Appium API 文档

    该文档是Testerhome官方翻译的源地址:https://github.com/appium/appium/tree/master/docs/cn官方网站上的:http://appium.io/s ...

  2. 中文Appium API 文档

    该文档是Testerhome官方翻译的源地址:https://github.com/appium/appium/tree/master/docs/cn官方网站上的:http://appium.io/s ...

  3. appium(6)-parts of appium api

    parts of appium api Lock Lock the screen.//锁屏. // java driver.lockScreen(3); // objective c [driver ...

  4. 关于c#调用java中间件api的几个问题

    由于项目需要,做的c#客户端数据库连接串首先肯定不能写死的程序里(数据库很容易被攻击,我们的项目半年改了几次密码...) 放置在配置文件内,都可以看得到,最开始想法将配置文件加密,老师说加密过的文件还 ...

  5. Kylin Java RESTful API

    最近在做大数据方面的开发, 学习研究了一段时间的kylin系统, 对于前端开发需要使用 RESTful API ,但是官网并没有提供详细的Java  API. 经过几天的看文档,最终写出了 Java ...

  6. Java 2D API - 2. Graphics 入门

    Java 2D API强大而复杂,不过大多时候我们只需使用java.awt.Graphcis类的部分功能.下面的内容将覆盖大多数的常见应用. Graphics 类中的方法大致可以分为两类: Draw ...

  7. Java 2D API - 1. 基本概念

    Java 2D API扩展AWT包,对二维图形.文本及成像功能提供了支持,可用于开发复杂的界面.绘图软件和图像编辑器.Java 2D对象位于用户坐标空间(User coordinate space), ...

  8. libj 0.8.2 发布,Java/JavaScript API 的 C++ 实现

    libj 0.8.2 增加了一些新的字符串相关的方法. libj 是一个跨平台的运行库,相当于提供了类似 Java/JavaScript API.libj 的内存管理是自动的,基于 shared_pt ...

  9. Android使用Java Mail API发送邮件

    最近在考虑为已经有的一个应用程序增加一个用户反馈的功能,用户可以通过反馈功能将用户的意见和建议.程序出现的问题以一种更符合用户习惯的方式反馈回来.网上也有一些实现好的反馈程序的服务,包括bug的提交. ...

随机推荐

  1. Windows Phone 四、控件模版

    控件模版的概念 Windows Phone中每一个控件都有一个默认的模版,用于描述控件的内部组成结构和外观样式 相对于原本的样式外观操作,自定义模版的可自定义性更强 最基本的重写控件模版 <Gr ...

  2. 敏捷项目开源管理软件ScrumBasic(2)- 多项目支持

    1.加入Project对象模型 public class Project { [Key] [MaxLength(32)] public string ID { get; set; } public s ...

  3. Delphi 调用C# DLL(包含委托)

    例子 C# Dll: using System; using System.Collections.Generic; using System.Text; using System.Diagnosti ...

  4. 解决VS2015启动时Package manager console崩溃的问题 - Windows PowerShell updated your execution policy successfully, but the setting is overridden by a policy defined at a more specific scope

    安装VS2015,启动以后,Package manager console崩溃,错误信息如下: Windows PowerShell updated your execution policy suc ...

  5. 异步记载数据时page是怎么计算的

    最近一直在完善基于Busybox做的ARM Linux的根文件系统,由于busybox是一个精简的指令集组成的简单文件系统,其优点就是极精简,满足了Linux基本的启动需求,由于它几乎没有什么后台服务 ...

  6. ORA-1034 ORACLE not available (转)

    http://blog.csdn.net/onlyone_htliu/article/details/6075150 前言 每一个DBA在进行数据库管理的过程中不可避免的要遇到形形色色的错误(ORA- ...

  7. Java中ProcessBuilder应用实例

    系列说明 浅析Java.lang.Runtime类 浅析Java.lang.Process类 浅析Java.lang.ProcessBuilder类 可以使用java中的ProcessBuilder执 ...

  8. &和&&的区别

    &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false. ...

  9. RK3288 GPIO 输出问题

    cat /sys/kernel/debug/gpio cat /proc/bus/input/devices #define GPIO_BANK0              (0 << R ...

  10. mysql基本语句

    mysql -u root -p; 登录数据库 show databases; 展示数据库 show tables; 展示表 desc messages; 查看messages表的结构 drop da ...