zoukankan      html  css  js  c++  java
  • Appium移动端自动化测试-安卓真机+模拟器启动

    一.环境准备

    appium-pythin-client版本(0.17),selenium版本(2.53.6)(版本需对应,否则执行脚本可能出错,我用的是这两个版本)

    macOs版本10.14.1(appium默认不支持该版本,需修改配置文件),参考:https://blog.csdn.net/yxys01/article/details/73551281

    xcode版本10.1

    下载SDK解压后,点击tools文件里的android文件,进行相关安卓版本下载

    二.demo代码

    测试文件代码:

    # coding=utf-8
    """
    
    author:     zhuzhuzhujt
    datetime:   2019/3/5 4:09 PM
    project:    appuimtest
    software:   PyCharm
    description:
    
    """
    import os
    import unittest
    from appium import webdriver
    import time
    import swipeandroid as sw
    # from selenium.webdriver.support.ui import WebDriverWait
    
    
    # Appium环境配置
    PATH = lambda p: os.path.abspath(
        os.path.join(os.path.dirname(__file__), p)
    )
    # print PATH
    
    
    class DpAppTests(unittest.TestCase):
        def setUp(self):
            desired_caps = {
                'automationName': 'Appium',
                'platformName': 'Android',
                'deviceName': '192.168.0.55:5556',
                'platformVersion': '5.1',
                # apk包名
                'appPackage': 'cn.campsg.xuebaketang3.app',
                # apk的launcherActivity
                'appActivity': '.MainActivity',
                # 键盘相关
                'unicodeKeyboard': True,
                'resetKeyboard': True,
                # 是否自动启动
                'autoLaunch': True,
                # 可下载地址,如果测试机无该应用会自动进行下载安装操作
                'app': PATH('xuebayun.apk'),
                # 如果测试机已有该应用,不再进行下载安装操作
                'noReset': True
            }
            self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
            # WebDriverWait(self.driver, 30, poll_frequency=0.5, ignored_exceptions=None)
    
        def tearDown(self):
            self.driver.quit()
    
        def test_dpApp(self):
    
            time.sleep(10)
            # 左滑
            sw.swipLeft(500, self.driver)
            # 左滑
            sw.swipLeft(500, self.driver)
            # 模拟定位点击"立即体验"
            sw.simclick(self.driver, 0.54, 0.89)
            time.sleep(2)
            self.driver.find_element_by_android_uiautomator('new UiSelector().text("请输入学校名称")').send_keys(u'****')
            time.sleep(1)
            self.driver.find_element_by_android_uiautomator('new UiSelector().text("请输入账号")').send_keys('***')
            time.sleep(1)
            self.driver.find_element_by_android_uiautomator('new UiSelector().text("•••••")').send_keys('***')
            time.sleep(1)
            self.driver.find_element_by_android_uiautomator('new UiSelector().description("登录")').click()
            time.sleep(4)
    
    
    if __name__ == '__main__':
        suite = unittest.TestLoader().loadTestsFromTestCase(DpAppTests)
        unittest.TextTestRunner(verbosity=2).run(suite)

    调用方法swipeandroid.py:

    # coding=utf-8
    """
    
    author:     zhuzhuzhujt
    datetime:   2019/3/6 11:56 AM
    project:    appuimtest
    software:   PyCharm
    description:
    
    """
    
    
    def getSize(dr):
       # 获取屏幕宽高 x
    = dr.get_window_size()['width'] y = dr.get_window_size()['height'] return x, y def swipeUp(t, dr): l = getSize(dr) x1 = int(l[0] * 0.5) y1 = int(l[1] * 0.75) y2 = int(l[1] * 0.25) dr.swipe(x1, y1, x1, y2, t) def swipeDown(t, dr): l = getSize(dr) x1 = int(l[0] * 0.5) # x坐标 y1 = int(l[1] * 0.25) # 起始y坐标 y2 = int(l[1] * 0.75) # 终点y坐标 dr.swipe(x1, y1, x1, y2, t) # 屏幕向左滑动 def swipLeft(t, dr): l = getSize(dr) x1 = int(l[0]*0.75) y1 = int(l[1]*0.5) x2 = int(l[0]*0.05) dr.swipe(x1, y1, x2, y1, t) # 屏幕向右滑动 def swipRight(t, dr): l = getSize(dr) x1 = int(l[0]*0.05) y1 = int(l[1]*0.5) x2 = int(l[0]*0.75) dr.swipe(x1, y1, x2, y1, t) def simclick(dr, xper, yper): # 模拟坐标点击 l = getSize(dr) x1 = int(l[0]*xper) y1 = int(l[1]*yper) dr.swipe(x1, y1, x1, y1, 1)

    三.真机运行

    usb连接,开启开发者选项中的usb调试功能。控制台输入:adb devices查看设备列表

    或者通过wifi连接,手机和电脑属于同一网段且能够ping通,控制台输入:adb connect 192.168.0.55:5556(默认断口号5555,可以adb tcpip 5556进行更改),提示连接成功后,控制台输入:adb devices查看设备

    py代码参数设置如下:

    desired_caps = {
                'automationName': 'Appium',
                'platformName': 'Android',
                'deviceName': '192.168.0.55:5556',
                'platformVersion': '5.1',
                # apk包名
                'appPackage': 'cn.campsg.xuebaketang3.app',
                # apk的launcherActivity
                'appActivity': '.MainActivity',
                # 键盘相关
                'unicodeKeyboard': True,
                'resetKeyboard': True,
                # 是否自动启动
                'autoLaunch': True,
                # 可下载地址,如果测试机无该应用会自动进行下载安装操作
                'app': PATH('xuebayun.apk'),
                # 如果测试机已有该应用,不再进行下载安装操作
                'noReset': True
            }

    打开appium,点击launch打开appium服务后,在pycharm上执行代码,测试机会自动执行

    四.安卓模拟器执行

    SDK文件夹,点击tools文件里的android文件 

    1.下载android版本,我这里下载的是5.1版本 

    2.下载完成后,点击菜单栏如下,选择Manage AVDs

    3.点击create,创建模拟器,如图(具体配置可以自行百度)

    4.点击start运行模拟器,此处一开始点击启动时,报了个未安装Intel HAXM的error,此时回到 Android SDK Mannager配置页,选择extras下如图的文件进行安装

    下载成功后,我又试了下start模拟器,仍旧报错。

    此时进入SDK文件夹,多了个extras文件夹,点进去选择intel,一层层进入,会有个两个安装文件,如下图,我试了第1个未安装成功,点击第2个文件提示安装好后,进入系统安全性与隐私内,把系统阻拦的文件访问给允许(就因为这个地方导致一直无法访问intel HAXM

    之后,进入AVM配置页面,点击start,模拟器成功启动(特别慢,需要等很久时间),进入系统后显示如图

    5.修改代码参数配置处,修改deviceName,模拟器设备名,可进入控制台输入:adb devices查看,如下图

    修改代码: 

    6.打开appium,点击launch,启动appium服务后,运行代码文件

    自动下载apk文件安装,并自动执行

    (注:模拟器过分卡顿,很容易出现应用闪退的情况,之后准备再试一下夜神模拟器上运行的情况)

    以上就是Appium自动化测试在真机和模拟器上的运行步骤,下一节,稍微写一下ios真机及ios模拟器自动运行应用的情况。

  • 相关阅读:
    深析Tomcat容器工作流程
    GC基础
    oracle sql总结
    mybatis返回值类型总结
    eclipse启动javaweb项目后,如何让局域网内的其他人访问
    oracle sql 逗号 分割 REGEXP_SUBSTR 函数
    Oracle12c安装时报"指定的oracle主目录用户已存在"错误
    spring
    Oracle sql where后面的多条件case when判断执行
    Oracle12c安装时报ins-30131
  • 原文地址:https://www.cnblogs.com/zhuzhutest/p/10489873.html
Copyright © 2011-2022 走看看