zoukankan      html  css  js  c++  java
  • app自动化测试----基础入门appium初使用(UI自动化)

    1.说明

       前提:app自动化环境搭建----Windows系统搭建  已搭建完成

       appium官方文档:https://appium.io/docs/en/about-appium/getting-started/?lang=zh

    2.创建项目(连接手机)

    python appium 官方地址:https://pypi.org/project/Appium-Python-Client/

    # 安装 python appium 包
    pip install Appium-Python-Client   # windows系统执行命令
    pip install Appium-Python-Client   # mac系统执行命令

    项目结果:

    # main.py 文件
    import os
    from appium import webdriver
    
    # 获取apk在项目中的存放地址
    apk = os.path.join(os.path.dirname(os.path.abspath(__file__)),'apk/app-release-fanmao-cnode.apk')
    
    desired_caps = {
        'platformName':'Android',          # 测试Android系统
        'platformVersion':'7.1.2',         # Android版本 可以在已连接手机 设置->关于手机 中查看
        'deviceName':'127.0.0.1:62001',    # cmd中使用 adb devices 命令查看已连接的设备
        'automationName':'UiAutomator2',   # 自动化引擎(默认UiAutomator2即可)
        'app':apk                          # app 文件路径(当前方式,每次运行项目,app都会重新安装一次)
    }
    
    # 创建 webdriver 实例 连接手机
    driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_capabilities=desired_caps)

    第一步:启动 appium server

    需要注意的是:使用手机测试的话,启动appium 的时候需要在手机上安装 appium setting 有些手机有安全选项 需要手动去确认一下。

    第二步:在pycharm中执行代码

    如果是在模拟器中执行,会先安装appium setting(有,则跳过这一步),再安装我们测试的apk,然后打开apk(打开成功,则连接手机通过,才可以继续编写我们的代码)

    执行完成后,可以关闭appiu(Ctrl+c 即可以关闭)

    3.自动化登录app

     (1)找到自己的adb安装路径

     找到 app 定位工具

    (2)在模拟器或者连接的真机中,打开app里面我们需要定位的页面,再打开uiautomatorviewer.bat

     

    (3)元素定位----xpath 定位

    //class的值[@属性及其对应的值] /下面的元素class值

    //android.view.ViewGroup[@resource-id="org.cnodejs.android.md:id/toolbar"]/android.widget.ImageButton

    # main.py 文件
    import os
    import time
    from appium import webdriver
    
    # 获取apk在项目中的存放地址
    apk = os.path.join(os.path.dirname(os.path.abspath(__file__)),'apk/app-release-fanmao-cnode.apk')
    
    desired_caps = {
        'platformName':'Android',          # 测试Android系统
        'platformVersion':'7.1.2',         # Android版本 可以在已连接手机 设置->关于手机 中查看
        'deviceName':'127.0.0.1:62001',    # cmd中使用 adb devices 命令查看已连接的设备
        'automationName':'UiAutomator2',   # 自动化引擎(默认UiAutomator2即可)
        'app':apk                          # app 文件路径(当前方式,每次运行项目,app都会重新安装一次)
     } 

    # 创建 webdriver 实例 连接手机
    driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_capabilities=desired_caps) time.sleep(5)

    # 点击登录
    login_image_btn = '//android.view.ViewGroup[@resource-id="org.cnodejs.android.md:id/toolbar"]/android.widget.ImageButton' driver.find_element_by_xpath(login_image_btn).click()
    time.sleep(
    1)
    click_login_name
    = 'org.cnodejs.android.md:id/tv_login_name'
    driver.find_element_by_id(click_login_name).click() time.sleep(
    1)

    # 输入登录的token http://47.100.175.62:3000/
    driver.find_element_by_id('org.cnodejs.android.md:id/edt_access_token').send_keys("83dc9ad3-f0e1-4cf3-a0de-d82a3508f79d")

    # 点击登录
    driver.find_element_by_id('org.cnodejs.android.md:id/btn_login').click()

    第一步:启动 appium server

    需要注意的是:使用手机测试的话,启动appium 的时候需要在手机上安装 appium setting 有些手机有安全选项 需要手动去确认一下。

    第二步:关闭 uiautomatorviewer.bat 元素定位工具

    第二步:在pycharm中执行代码

    4.元素定位

    (1)Xpath定位

            //class的值[@属性及其对应的值] /下面的元素class值

            //android.view.ViewGroup[@resource-id="org.cnodejs.android.md:id/toolbar"]/android.widget.ImageButton

    (2)and 并且多个属性来定位

          //*[@text="登录" and @resource-id="org.cnodejs.android.md:id/btn_login"]

    (3)子元素定位,先找到父元素,再找到子元素,[2] 表示第二个子元素

          //*[@resource-id="org.cnodejs.android.md:id/recycler_view"]/android.widget.LinearLayout[2]

    (4)xpath text 文本值定位

            //*[@text="点击头像登录"]

        

    5.自动化发微博

        5.1 先在模拟器上面下载并安装 微博App (使用模拟器/真机都可以),安装完成并登陆后,获取包名,启动页名称

              打开cmd,运行命令

             

           打开模拟器中的微博,查看日志

          

         packageName:com.sina.weibo        activityName.SplashActivity

       5.2 连接模拟器获取自动化代码

       启动 appium桌面客户端

     

        在新的窗口中添加连接配置

       

    {
        "platformName":"Android",          # 测试Android系统
        "platformVersion":"7.1.2",         # Android版本 可以在已连接手机 设置->关于手机 中查看
        "deviceName":"127.0.0.1:62001",    # cmd中使用 adb devices 命令查看已连接的设备
        "automationName":"UiAutomator2"    # 自动化引擎(默认UiAutomator2即可)
    }
    
    
    # 可直接复制到JSON Representation
    {
      "platformName": "Android",
      "platformVersion": "7.1.2",
      "deviceName": "127.0.0.1:62001",
      "automationName": "UiAutomator2"
    }

     ps:上传图片好麻烦啊~~~(注意,需要先下载几张图片在手机相册中)

    from appium import webdriver
    import time
    
    from appium.webdriver.common.touch_action import TouchAction
    
    desired_caps = {
        'platformName':'Android',          # 测试Android系统
        'platformVersion':'7.1.2',         # Android版本 可以在已连接手机 设置->关于手机 中查看
        'deviceName':'127.0.0.1:62001',    # cmd中使用 adb devices 命令查看已连接的设备
        'automationName':'UiAutomator2',   # 自动化引擎(默认UiAutomator2即可)
        'noReset': True,                   # 不要重置app的状态(比如,已经登陆的app,我们运行项目的时候保留之前的状态)
        'fullReset': False,                # 不要清理app的缓存数据(比如,已经登陆的app,我们运行项目的时候保留之前的状态)
        'appPackage':"com.sina.weibo",     # 应用的包名(打开对应包名的app)
        'appActivity': ".SplashActivity"   # 应用的活动页名称
    }
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_capabilities=desired_caps)
    time.sleep(15)
    
    el1 = driver.find_element_by_id("com.sina.weibo:id/rightBtn_wrapper")
    el1.click()
    time.sleep(2)
    el2 = driver.find_element_by_accessibility_id("写微博")
    el2.click()
    # 等待发微博页面加载成功
    time.sleep(3)
    el3 = driver.find_element_by_id("com.sina.weibo:id/edit_view")
    el3.send_keys("Hi 今天天气真好啊")
    
    driver.find_element_by_accessibility_id("插入图片").click()
    time.sleep(3)
    # 选择图片(抓取不到,所以需要自己去写)
    xpath_img1 = '//*[@resource-id="com.sina.weibo:id/photo_album_gridview"]/android.widget.RelativeLayout[2]'
    xpath_img2 = '//*[@resource-id="com.sina.weibo:id/photo_album_gridview"]/android.widget.RelativeLayout[3]'
    driver.find_element_by_xpath(xpath_img1).click()
    time.sleep(2)
    # 选中
    driver.find_element_by_id('com.sina.weibo:id/btn_num_check').click()
    # 返回上一层
    driver.back()
    time.sleep(2)
    driver.find_element_by_xpath(xpath_img2).click()
    time.sleep(1)
    driver.find_element_by_id('com.sina.weibo:id/btn_num_check').click()
    # 点击下一步
    driver.find_element_by_id('com.sina.weibo:id/btn_confirm_edit').click()
    time.sleep(1)
    driver.find_element_by_id('com.sina.weibo:id/btn_confirm_edit').click()
    time.sleep(1)
    
    
    el4 = driver.find_element_by_accessibility_id("发送")
    el4.click()
    # 刷新微博
    time.sleep(3)
    TouchAction(driver).press(x=390, y=200).move_to(x=390, y=1323).release().perform()
    
    # driver.quit()

            

  • 相关阅读:
    Windows 8实例教程系列 开篇
    qt 开发发布于 windeploy.exe
    qt qoci 测试验证
    vmware vmx 版本不兼容
    qt oracle
    vc qt dll
    QOCIDriver unable to create environment
    qoci 编译完 放置位置 具体根据情况
    calling 'lastError' with incomplete return type 'QSqlError' qsqlquer
    Hbase 操作工具类
  • 原文地址:https://www.cnblogs.com/Z-Queen/p/14855826.html
Copyright © 2011-2022 走看看