Selenium能够操控Web浏览器,手机APP平台也有类似的自动化测试对象:Appium
全文分根蒂根基先容、环境搭建和案例演示三局部先容Appium,以帮忙Learner快速的上手。

根蒂根基先容

Appium是一个开源的自动化测试框架,用于原生,混杂和挪动Web应用程序。 它运用WebDriver协议驱动iOS,Android和Windows应用程序。关于它的运作流程,用图来先容会愈加活跃形象一些:

Appium运转流程、情理

在上图中,右边这局部是Appium-Client,通俗点来说,是用于间接驱动最右边的装备
履行
预定的自动化测试流程,支持运用多种主流的编程言语举行编写,这也是测试开发人员需求存眷的核心局部;两头的Appium-Server是跟尾右边客户端以及右边APP装备
端的重要桥梁,一般仅需求设置好环境及启动运转;右边这块,当然就是现实履行
自动化测试的终端,如IOS真机、Android真机,或者是模拟器。

环境搭建

  • NodeJS

Appium是运用nodejs实现的,因此Node是说明器,起首要确认装置好

  • Appium-Server

    • nodejs

上述的两种体式格局都能够搭建Appium-Server环境,后面演示会基于Appium-Desktop。(PS:下载太慢了?分享个)

  • Andrioid SDK

上述体式格局能够直接和间接搭建装置Android环境,因为后面要用到adb这个对象,以是需求设置好ANDROID_HOME这个环境变量。(PS:下载太慢了?分享个)

  • Appium-Python-Client

后面会用到Python来编写Appium客户端:pip install Appium-Python-Client

okay,准备好以上几个环境后,启动Appium测试一下:

Appium Desktop Server

Appium Desktop Server

案例演示

上面演示在安卓真机上的自动登录Keep(APP)。

  1. 获得
    装备
    名称。驾御流程:开启手机的开发和调试模式,连接电脑受权认证,Window + R输出并运转cmd,用adb devices -l检察:

获得
装备

  1. 启动Appium Server举行调试:

Inspector Session

Desired Capabilities

从上图能够看到,启动App Session需求有如下几个参数(点击理解更具体的):

  • platformName,如AndroidiOS
  • deviceName,参考前面是如何获得
  • appPackageappActivity,获得

综上所述,这里对应Keep的信息如下:

{
  "platformName": "Android",
  "deviceName": "WAS_AL00",
  "appPackage": "com.gotokeep.keep",
  "appActivity": "com.gotokeep.keep.splash.SplashActivity"
}

点击Start Session,以后
能够看到手机端启动了Keep,并且在Appium Server端中同步展示:

Start Session

Keep

上述的驾御通常只是用来方便获得
控件id及定位的,上面基于Python编写完整的Appium-Client以实现自动登录驾御:

from appium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

server = 'http://localhost:4723/wd/hub'  # Appium Server, 端口默许为4723
desired_capabilities = {
    'platformName': 'Android',
    'deviceName': 'WAS_AL00',  # 需互换成你的deviceName
    'appPackage': 'com.gotokeep.keep',
    'appActivity': 'com.gotokeep.keep.splash.SplashActivity'
}

driver = webdriver.Remote(server, desired_capabilities)
wait = WebDriverWait(driver, 10)  # 最大查找等待超时时光:10s


def get_permission():
    """许可APP获得
的某些权限"""

    try:
        ask = wait.until(EC.presence_of_element_located((By.ID, 'com.android.packageinstaller:id/do_not_ask_checkbox')))
        ask.click()
        allow = wait.until(
            EC.presence_of_element_located((By.ID, 'com.android.packageinstaller:id/permission_allow_button')))
        allow.click()
    except:
        pass


# 许可两项受权
get_permission()
get_permission()

# 点击“立即运用”
welcome = wait.until(EC.presence_of_element_located((By.ID, 'com.gotokeep.keep:id/btn_bottom_in_video_welcome')))
welcome.click()

# 切换“暗码登录”(同样能够运用第三方举行受权登录)
driver.tap([(900, 110)])

# 输出“手机号”
phone = driver.find_element_by_accessibility_id('Phone Number In Login')
phone.send_keys('13988888888')  # 互换成现实的账号

# 输出“暗码”
password = driver.find_element_by_accessibility_id('Password In Login')
password.send_keys('123456')  # 互换成现实的暗码

# 点击“登录”
login = driver.find_element_by_id('com.gotokeep.keep:id/btn_action')
login.click()

最后,附上运转效果图:

效果图

文章已受权获得转载,原文地点:

更多精彩,尽在https://forumoutremer.com

Written by
admin