Appium原理介绍

版权声明:[email protected] https://blog.csdn.net/qq_37615098/article/details/83119971

Appium是什么?有什么用

开源,跨平台,多语言支持的 移动应用 自动化工具
测试对象:

  • 原生APP

  • 混合(Hybrid)app

  • 移动web app

测试对象App运行平台:

  • ios
  • Andriod
  • Windows
  • Firefoxos

测试对象App运行坏境:

  • 真实设备
  • 模拟器

测试程序语言:
pythonjavaRubyjsphpC#
自动化程序运行平台:

  • Windows,Linux,mac OS

  • IOS的应用,appium server 必须要运行在苹果的手机上

     MacBook
     Imac
    

Node.js是js程序的一个解释器
#AppiumServer是用js开发的。node.js是js的解释器。
我们写的程序,通过编程接口去调用Appium组织开发好的客户端库。客户端库就会构建http请求发送给AppiumServer,,AppiumServer接收到之后就会在在手机上安装一个解释执行程序(自动化模块)。同时把消息发送给手机。手机接收到命令(再调用UiAutomator库)就可以执行自动化了。

  • 苹果:UIAutomation/XCTest

  • 安卓:UIAutomator

Andriod
#版本4.1之前的版本,自动化依赖于Selendroid

  • 2.3-4.1:Selendroid

  • 4.2+: UiAutomator 框架 谷歌官方提供的自动化测试框架,提供了一系列的工具库。:(90%以上的市场份额)

ios:

  • ios9.3 以前,苹果使用的是UIAutomation

  • ios9.3+ XCUITest(也是提供了一个库) (90%以上的市场份额)

安装

  • 安装客户端库:

         pip install Appium-Python-Client			#安装客户端库
     
         pip install selenium -U                 更新selenium
         pip install Appium-Python-Client -U      更新appium			
    

安装Appium Server

安装Andriod SDk

安卓app的自动化,Appium server依赖Andriod SDk

“”"

from appium import webdriver   #webdriver是基于selenium扩展的一个对象
import time,traceback

desired_caps = {}   #存储一些配置信息,通过字典键值对来存。吧配置信息传递给appium server
desired_caps['platformName'] = 'Android'      #指定自动化的设备
desired_caps['platformVersion'] = '4.4.4'    #设备的操作系统版本
desired_caps['deviceName'] = 'test'    #对安卓没啥用,但是不能不写
# desired_caps['app'] = r'e:\apk\toutiao.apk'       #app安装包的路径,如果手机没装的话,会帮你装上。如果装好,可以注释
desired_caps['appPackage'] = 'io.manong.developerdaily'     #应用的包名
desired_caps['appActivity'] = 'io.toutiao.android.ui.activity.LaunchActivity'   #告诉appium启动的Activity的名字,安卓应用是由多个Activity组成的
desired_caps['unicodeKeyboard']  = True    #输入中文的话,这个就要打开。给appium自动化用的。输入非ask码用的
desired_caps['resetKeyboard']  = True   #配合上面一起用的,据说可以还原之前的输入法
desired_caps['noReset'] = True          #非常重要。如果不设置的话。每次运行都会清空里面的数据。
desired_caps['newCommandTimeout'] = 6000     #主要是与服务端appiumserver连接的时间,防止断开。6000s
#启动Remote RPC
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
try:
    driver.implicitly_wait(10)

    # 根据id找到元素,并点击,id和 html 元素的id不同
    driver.find_element_by_id("io.manong.developerdaily:id/tab_bar_plus").click()
    time.sleep(1)
    driver.find_element_by_id("io.manong.developerdaily:id/btn_email").click()
    time.sleep(1)

    # 输入用户名、密码
    ele = driver.find_element_by_id("io.manong.developerdaily:id/edt_email")
    ele.send_keys('[email protected]')
    ele = driver.find_element_by_id("io.manong.developerdaily:id/edt_password")
    ele.send_keys('sdfsdf')

    time.sleep(2)
    # 点击登录
    driver.find_element_by_id('io.manong.developerdaily:id/btn_login').click()
    pass

except:
    print (traceback.format_exc())


input('**** Press to quit..')
driver.quit()

“”"

Appium自动化 选择界面元素 操作元素 点击 输入字符 拖拽 获取页面元素的各种属性 根据Appium获取的数据进行分析和处理

代码回顾:

from appium import webdriver    #如果没有
import time,traceback

desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '7.0'
desired_caps['deviceName'] = 'test'
# desired_caps['app'] = r'e:\apk\toutiao.apk'
desired_caps['appPackage'] = 'io.manong.developerdaily'
desired_caps['appActivity'] = 'io.toutiao.android.ui.activity.LaunchActivity'
desired_caps['unicodeKeyboard']  = True
desired_caps['resetKeyboard']  = True
desired_caps['noReset'] = True
desired_caps['newCommandTimeout'] = 6000
#启动Remote RPC
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

try:
    driver.implicitly_wait(10)

    # 根据id找到元素,并点击,id和 html 元素的id不同
    driver.find_element_by_id("io.manong.developerdaily:id/tab_bar_plus").click()
    time.sleep(1)
    driver.find_element_by_id("io.manong.developerdaily:id/btn_email").click()
    time.sleep(1)

    # 输入用户名、密码
    ele = driver.find_element_by_id("io.manong.developerdaily:id/edt_email")
    ele.send_keys('[email protected]')
    ele = driver.find_element_by_id("io.manong.developerdaily:id/edt_password")
    ele.send_keys('sdfsdf')

    time.sleep(2)
    # 点击登录
    driver.find_element_by_id('io.manong.developerdaily:id/btn_login').click()
    pass

except:
    print (traceback.format_exc())


input('**** Press to quit..')
driver.quit()

Appium测试程序和Appium server之间的http请求必须要在一个session中进行
session ID

“”"

猜你喜欢

转载自blog.csdn.net/qq_37615098/article/details/83119971