appium环境搭建+真机+获取package和activity来验证是否搭建成功+appium自带的定位元素

 提醒:安装好的环境不能随意改动配置和环境变量,如果改动需要重新启动appium server服务,要不然代码会一直报错,没有配置adb环境变量

首先,我们需要搭建环境,要准备以下安装包和一部手机:

所有需要的包给大家一个链接地址可供下载:

链接: https://pan.baidu.com/s/16daXwktbGGYf3a6EaB9B1Q 提取码: uakz 

第一步:安装JDK

  解压上面的jdk包,安装到需要的地方

  配置环境变量:

    

    

  验证是否安装和配置成功:

    cmd中输入java -version

   

第二步:安装appium server

    解压Appium-windows-1.13.0.zip,点击“下一步”安装

第三步:安装sdk,解压androidsdk.zip

    

    配置adb环境变量:因为在appium server 使用的时候会执行adb命令去执行我们的操作,所以必须要配

    

              

     验证是否配置成功,cmd中输入adb version

     

第四步:上面配置成功后,需要验证是否真正可以执行了

     1. 需要有一台安卓手机,并打开开发者工具

     2. 检查手机是否连接成功,在cmd中输入: adb  devices

               3. 获取到我们需要被测应用的package和activity

                  两种方法获取:

        第一种:将apk保存到一个指定的目录下

          aapt.exe dump badging D:songqinappiumapk outiao.apk

        第二种:不知道apk,直接打开被测试的应用程序

          adb shell dumpsys activity recents find "intent={"

第五步:appium server (start inspector session)自带的定位元素方式

       appium自带的定位元素,可以可以验证是否有多个存在,比其他的方便一些,可以使用id,class,name,xpath来定位

  1.打开appium,点击

    

  2.可以配置启动项,这里可以添加参数,需要打开的APP,什么方式打开等等,参照第六条代码,基本一致

     

            3.然后点击“start session”

      里面就和当前手机打开的页面一致,可以根据不同定位去搜索,验证,也可以在刷新页面,重新定位

 第六步:在pycharm执行脚本,前提条件(打开appium server 服务,手机已经连通)

    这里给大家一个apk:

      链接: https://pan.baidu.com/s/1XzA8dhhzfUoi7NUUMf9NOA 提取码: hfue 

        代码如下:

                           

from appium import webdriver
import time,traceback


# 这里定义的 desired_capabilities,作为下面 webdriver.Remote
# 初始化一个webdriver的参数。
# 这些键值对告诉appium server 测试程序希望进行的是什么什么样的测试
# 比如下面 platformName 和 platformVersion 两个配置项
desired_caps = {}
desired_caps['platformName'] = 'Android' #测试平台,不能写错
desired_caps['platformVersion'] = '5.1.1' #平台版本,不能写错
#设备名称,其实没有太大的用处,只是给测试程序使用的,苹果手机一定要有
desired_caps['deviceName'] = 'test'
#apk 文件路径名,如果设备还没有此应用,则会安装。 什么是apk文件?
# android application package 安卓移动App安装包
# desired_caps['app'] = r'D:songqinappiumapk	outiao.apk'
#app package名,一定要有,是开发者给app取的名字,可以唯一标识这个app # 安卓上运行某个app,不是根据它的路径而是appid ,也就是这package name
# 怎么获取?后面会讲
desired_caps['appPackage'] = 'io.manong.developerdaily'
# app默认Activity,也是必须的参数。Activity 的概念后面会讲述,
# 目前我们就理解为一个用户操作界面就可以了
# 怎么获取?后面会讲
desired_caps['appActivity'] = 'io.toutiao.android.ui.activity.LaunchActivity'
# 一定要有该参数,否则测试过程中无法输入中文
#加上这个参数会新加一种unicode输入法
desired_caps['unicodeKeyboard'] = True
# 保证了app 测试前不会清除应用数据,缺省是会清除数据的,
desired_caps['noReset'] = True
# appium server 认为 和客户端之间 无响应最大时间,超过这个时间就会停止服务
desired_caps['newCommandTimeout'] = 6000
# appium server 在这个URI上接收 客户端发送的rest API请求
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

# 下面的操作是自动化一个用户登录的过程,大家课后自己尝试的时候,需要先注册用户
# 怎么注册演示给大家看看, 怎么登录也演示给大家看看,
# 最后别忘了要退出登录,一遍自动化可以执行
try:
    # 和Selenium含义一样,问问大家还记得吗?
    driver.implicitly_wait(10)

    # 根据id找到元素,并点击,id和 html 元素的id不同,
    # 和appiumserver、设备之间的消息流程类似于 selenium,和
    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('jcyrss@163.com')
    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()
    driver.quit()
    pass

except:
    print (traceback.format_exc())

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

运行成功,可以看到手机在自动安装APP,自己登陆!!

原文地址:https://www.cnblogs.com/yangguanghuayu/p/11330629.html