zoukankan      html  css  js  c++  java
  • appium+Python真机运行测试demo的方法

    appium+Python真机运行测试demo的方法

    一,    打开手机的USB调试模式

    二,    连接手机到电脑

       将手机用数据线连接到电脑,并授权USB调试模式。查看连接的效果,在cmd下运行命令:adb devices查看UDID,如下图所示:

    如果有输出,就表示连接成功。

    三,    启动Appium服务

    方法一:cmd命令行启动

       根据查到的UDID启动appium服务,运行命令:

    #>appium -a 127.0.0.1 -p 4723  –U  6207febc --no-reset

    -U 参数后面跟的一串字符就是手机的UDID,这个是通过第二步查到的。

    当程序输出如上图信息的时候,表示appium启动成功,此时便可以运行测试脚本了。

    方法二:appium界面启动

    四,    测试脚本的编写及运行

       真机运行的测试脚本与模拟器上几乎是相同的,就是有些儿配置不太一样。具体脚本demo如下demo.py:

    #! /usr/bin/env python
    #coding=utf-8
    import os
    import time
    import unittest
    from selenium import webdriver
    from lib2to3.pgen2.driver import Driver
    from lib2to3.tests.support import driver

    PATH=lambda p:os.path.abspath(os.path.join(os.path.dirname(__file__),p))

    desired_caps = {}
    desired_caps['platformName'] = 'Android'  #设备系统
    desired_caps['platformVersion'] = '5.1.2'  #设备系统版本
    desired_caps['deviceName'] = 'Lenovo P1c72'  #设备名称

    desired_caps['app'] = PATH('C:\Users\LENOVO\Desktop\StarZone_V2.0.0.apk') 
    #desired_caps['appPackage'] = 'com.xiangchao.starspace'  
    #desired_caps['appActivity'] = 'com.xiangchao.starspace.activity.SplashActivity'

    #如果设置的是app在电脑上的路径,则不需要配appPackage和appActivity,同理反之

    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)  #启动app

    time.sleep(5)  #启动app时,需要一定时间进入引导页,所以必须设置等待时间,不然下面会一直报错定位不到元素
    driver.find_element_by_id('com.xiangchao.starspace:id/skip').click()

    driver.quit()

     

    另开一个cmd窗口,运行测试脚本(python demo.py)即可。此时服务端就会有输出,程序在手机上运行。

    注:在测试用例运行过程中,正常情况下手机会自动安装Settings和Unlock,有些手机有兼容性问题,Settings和Unlock程序打不开,所以每次运行脚本都会提示安装,按提示允许安装就可以。

     

    Appium的Desired Capabilities是扩展了webdriver的Desired Capabilities的,下面的一些通用配置是需要指定的: 

    • automationName:使用哪种自动化引擎。appium(默认)还是Selendroid?
    • platformName:使用哪种移动平台。iOSAndroid, orFirefoxOS?
    • deviceName:启动哪种设备,是真机还是模拟器?iPhone SimulatoriPad SimulatoriPhone Retina 4-inchAndroid EmulatorGalaxy S4, etc...
    • app:应用的绝对路径,注意一定是绝对路径。如果指定了appPackage和appActivity的话,这个属性是可以不设置的。另外这个属性和browserName属性是冲突的。
    • browserName:移动浏览器的名称。比如Safari' for iOS and 'Chrome', 'Chromium', or 'Browser' for Android;与app属性互斥。
    • udid:物理机的id。比如1ae203187fc012g。

    下面这些属性是android平台特定的: 

    • appActivity:待测试的app的Activity名字。比如MainActivity, .Settings。注意,原生app的话要在activity前加个"."。
    • appPackage:待测试的app的java package。比如com.example.android.myApp, com.android.settings。

     

     获取Android app的appActivity

    网上有写很多方法https://testerhome.com/topics/1030,评论区还有补充

    我用的是把apk后缀改为zip格式,打开压缩包后再打开AndroidManifest.xml文件。找到manifest和activity地方,就是包名跟activity名。 

     
  • 相关阅读:
    Docker
    Docker
    Linux
    VUE- 前端插件
    小程序中实现 input 搜索框功能
    Vue 中用delete方式进行axios请求接口,请求状态码报415(Unsupported Media Type)
    关于小程序使用map组件,标记markers时报错误(ret is not defined)
    关于element 框架中table表格选中并切换下一页之前选中数据消失的问题
    vue切换路由时报错 uncaught(in promise) Navigation Duplicated 问题
    2019-09-09 JS面试题(持续更新中)
  • 原文地址:https://www.cnblogs.com/Nefeltari/p/5603163.html
Copyright © 2011-2022 走看看