• Appium初识


    一、 Appium工作原理

    基本工作流程如下:

    1. Appium提供了一套web服务,Appium起一个Server(4723端口),用于与脚本client通信。
    2. server接收web driver(即appium client)标准请求,解析请求内容,调用对应的框架响应操作。
    3. Appium Server把请求转发给Android中设备上的间件Bootstrap.jar,Bootstrap接收appium的命令(4724端口),底层通过调用UiAutomator命令执行操作。
    4. 同时由Bootstrap将执行结果返回给appium server。

    原理图:

    两个端口:

    • 4723: appium server与自动化脚本client的通信
    • 4724: Appium server于手机设备通信

    二、Appium优点

    • 跨平台
    • 跨应用
    • 跨架构:支持Native和Webview两种架构
    • 跨语言:不限制脚本编写语言
    • 其他:不依赖源码、不需要重新签名、不限制测试框架和平台(eg:TESTNG,JTEST)

    三、用例编写流程

    1、启动appium server;
    2、init driver;
    DesiredCapabilities设置:app、device、platformName、deviceName、udid、超时等
    3、用例执行:模拟用户进行UI操作;
    4、测试完成:

    1. 卸载app:removeapp  
    2. driver退出:driver.quit()
    

    四、常用API之元素定位

    Appium元素定位方式依赖于Selenium,因此,Selenium的定位方式,Appium都支持,也支持Android和iOS原生的定位方式。

    元素定位方法:

    方法 含义
    findElementById 元素的ID属性
    findElementsByName 元素的name属性
    findElementByTagName 元素的标签名
    findElementsByClassName 元素的class属性
    findElementByCssSelector Selenium最强大的定位方法,比xpath速度快,但比xpath难上手
    findElementByXPath 什么是Xpath
    findElementByCssSelector Selenium 最强大的定位方法,比 xpath 速度快,但比 xpath 难上手
    findElementsByLinkText 链接元素的全部显示文字
    findElementByPartialLinkText 链接元素的部分显示文字
    AccessibilityId Appium中用于替代name定位方式,Android-主要使用元素的content-desc属性;iOS-使用元素的label或name
    findElementByAndroidUIAutomator(new UiSelector().text(text)) 通过文本查找

    Android常用方法:id、className、xpath、AndroidUIAutomator、AccessibilityId.

    (一)AndroidUIAutomator支持的元素定位属性

    index(int index)
    text(String text)
    resourceId(String id)
    className(String className)
    packageName(String packageName)
    description(String desc)
    checked(boolean val)
    clickable(boolean val)
    enabled(boolean val)
    longClickable(boolean val)
    password(boolean val)
    selected(boolean val)
    instance(int val)
    

    特点:元素的所有属性都可以用做定位,功能非常强大且速度很快。

    (二)xpath元素定位

    1.使用绝对路径

     driver.findElementByXPath("className/className/className/className");
    

    2.使用相对路径

     driver.findElementByXPath("//className");
    

    3.使用元素的索引

     driver.findElementByXPath("//className[index]");
    

    4.通过元素的属性定位

     driver.findElementByXPath("//className[@label='XXX'][@isVisible='1']");
    

    五、常用API之driver支持操作

    			//元素操作
    			webElement.click();
    			webElement.sendkeys();
    		
    			//文件传输
    			driver.pushFile(remotePath, file);
    			driver.pullFile(remotePath);
    	
    			//启动activity
    			driver.startActivity(activity);
    			
    			//APP操作
    			driver.installApp(appPath);
    			driver.resetApp();
    			driver.launchApp();
    			driver.closeApp();
    			driver.removeApp(bundleId);
    

    六、常用API之断言

    Assert.assertTrue(boolean);
    Assert.assertFalse(boolean);
    Assert.assertSame(expected, actual);
    Assert.assertEquals(expected, actual);
    
    

    AndroidDriverWait:等待XXX元素出现

    原理参考:https://blog.csdn.net/jffhy2017/article/details/69220719

  • 相关阅读:
    -----------------------------2015年 年度总结-----------------------------
    ------第二节-----------------第二讲----单链表的基本操作---------
    shell 字符串截取
    express, mocha, supertest,istanbul
    Qunit 和 jsCoverage使用方法(js单元测试)
    jsp tutorial
    Unicode 和 UTF-8 是什么关系?
    wget -d --header
    python array
    responsive and functional programming RxJava
  • 原文地址:https://www.cnblogs.com/amyzhu/p/9280790.html
Copyright © 2020-2023  润新知