• app自动化测试----基础入门appium初使用2(Uiautomator 元素定位)


    1.说明

    元素定位方式有多种,Android也有自身独有的定位方式。下面就单独介绍其基于uiautomator定位元素的方法。

    基本语法:driver.find_element_by_android_uiautomator(xx)

    参考文档:https://developer.android.google.cn/reference/androidx/test/uiautomator/UiSelector?hl=en

     

    2.appium获取app包名和activityName

     

     

    3.Uiautomator 元素定位

    3.1 resourceId 属性定位

    # resourceId(以下2种写法,执行效果一致,使用其中一种即可)
    # driver.find_element_by_id("com.sina.weibo:id/rightBtn_wrapper").click()
    
    driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.sina.weibo:id/titleSave")').click()

    3.2 contenet-des属性定位

    # description 也是用contenet-des属性定位
    # driver.find_element_by_accessibility_id("写微博").click()
    
    driver.find_element_by_android_uiautomator('new UiSelector().description("写微博")').click()

    3.3 组合定位

    # 组合定位
    # driver.find_element_by_id("com.sina.weibo:id/ly_loadlocation").click()
    
    # resourceId 和clickable组合定位
    driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.sina.weibo:id/ly_loadlocation").clickable(true)').click()   

    其他示例:

    # id与text属性组合
    driver.find_element_by_android_uiautomator('resourceId("com.baidu.yuedu:id/webbooktitle").text("小说")')
    
    # class与text属性组合
    driver.find_element_by_android_uiautomator('className("android.widget.TextView").text("图书")')

    3.4 childSelector 定位(根据父元素查找子元素

    # 父元素定位
    driver.find_element_by_android_uiautomator('resourceId("com.baidu.yuedu:id/rl_tabs")')
    
    # 先找到父亲,再找儿子
    driver.find_element_by_android_uiautomator('resourceId("com.baidu.yuedu:id/rl_tabs").childSelector(text("小说"))')

    3.5 兄弟定位fromParent

    有时候父元素不好定位,但是跟他相邻的兄弟元素很好定位,这时候就可以通过兄弟元素,找到同一父级元素下的子元素

    #兄弟关系fromParent
    # brother = 'resourceId("com.baidu.yuedu:id/lefttitle").fromParent(text("图书"))'
    
    driver.find_element_by_android_uiautomator('resourceId("com.baidu.yuedu:id/lefttitle").fromParent(text("图书"))')

    4.UiScrolleable 滚动视图窗口

    UiScrolleable参考: https://developer.android.com/reference/android/support/test/uiautomator/UiScrollable.html

    appium 使用说明文档:https://appium.io/docs/en/writing-running-appium/android/uiautomator-uiselector/

    from appium import webdriver
    from appium.webdriver.common.touch_action import TouchAction
    
    desired_caps = {
        'platformName': 'Android',  # 测试Android系统
        'platformVersion': '7.1.2',    # Android版本 可以在手机的设置中关于手机查看
        'deviceName': '127.0.0.1:62001', # adb devices 命令查看  设置为自己的设备
        'automationName': 'UiAutomator2', # 自动化引擎
        'noReset': True, # 不要重置app的状态
        'fullReset': False, # 不要清理app的缓存数据
        'appPackage':"org.cnodejs.android.md", # 应用的包名
        'appActivity': ".ui.activity.MainActivity"   # 应用的活动页名称
    }
    
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_capabilities=desired_caps)
    
    import time
    # 等待页面加载成功
    time.sleep(3)
    
    
    scrolled = 'new UiScrollable(new UiSelector().resourceId("org.cnodejs.android.md:id/recycler_view")).flingToEnd(20)'
    
    driver.find_element_by_android_uiautomator(scrolled)
  • 相关阅读:
    170110-学习MoveIt!
    12.29-ros-gazebo高级
    12.27-ros-gazebo基础
    4.9-Simulation in gazebo or webots
    6.28-机器人模拟器Gazebo基础
    4.8-URDF in ROS
    Win32双缓冲画图原理
    Win32 计时器
    最简化的DirectX 11开发环境的配置 VS2010
    VS2010 C++编译报错LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
  • 原文地址:https://www.cnblogs.com/Z-Queen/p/14894841.html
Copyright © 2020-2023  润新知