• Appium+python定位方式


    介绍appium 几种简单的定位方式

    1、id定位
    格式:driver.find_element_by_id("这里是resource-id")
    driver.find_element_by_id("com.taobao.taobao:id/home_searchedit")
    2、name定位
    如上图的定位,就可以通过name来定位
    格式:driver.find_element_by_name("这里是text")
    driver.find_element_by_name("搭配新宠不能缺")
    注:appium1.5以下老的版本是可以通过name定位的,新版本从1.5以后都不支持name定位了**
    (如果text属性为空,那就不能通过name属性定位了)
    3、class定位
    格式:driver.find_element_by_class_name("class属性")
    driver.find_element_by_class_name("android.widget.EditText")
    (注:一般一个页面上的class属性不唯一,元素不唯一的话定位会报错了)
    4、accessibility_id定位就是通过UI Automator工具查看的content-desc属性
    (当然content-desc属性为空,就不能通过这个属性定位了,这里只是举个例子)
    看到content-desc属性有值,就可以通过accessibility_id来定位了

    格式:driver.find_element_by_accessibility_id(“content-desc的值”)

    driver.find_element_by_accessibility_id(“xxx”)

    (注:一般一个页面上的class属性不唯一,元素不唯一的话定位会报错了)
    除了上面的这几个通过属性定位的,复杂一点的还可以通过xpath和AndroidUiAutomator来定位

    5、list定位,即列表定位。driver.find_elements_by_id("com.baidu.yuedu:id/tab_search")[0].click()。
    说明:有些列表页面页面没有id属性,有class属性,但class属性不唯一。或者有id属性,但是列表的id属性都一样。这个时候可以采用list定位,取id相同或class相同的,定位一组元素,再通过下标取出元素,便可定位到想取出的元素。
    单数定位:find_element 为定位单数
    复数定位:find_elements 为定位复数
    例子:
    searchs = driver.find_elements_by_id("com.baidu.yuedu:id/tab_search")
    print(searchs) # 打印list
    print(type(searchs))
    该定位到为list类型
    定位一组之后,如果要点击该元素,那就先从list里面通过下标索引取出元素对象,再click就可以了。下标索引是从0开始。
    # list定位
    driver.find_elements_by_id("com.baidu.yuedu:id/tab_search")[0].click()

    6、xpath定位
    appium 1.5版本后name定位方式无法使用,可使用xpath代替
    appium中xpath语法://*[@text='页面text文本']
    例子:
    driver.find_element_by_xpath("//*[@text='小说']").click()
    若一个界面的text值不唯一呢?
    xpath语法里面*是代表匹配任意的值,在selenium里面*是匹配任意标签,appium里的*是匹配任意class名称,如果几个文本的class属性不一样,就可以通过以下组合:

    //android.widget.TextView[@text='小说']

    7、模拟手势点击坐标

    原因:定位元素确实无法定位到。可使用坐标定位,
    tap为模拟手指点击坐标
    driver.tap([(374, 831), (654, 906)], 500)

  • 相关阅读:
    TeeChart的X轴,使用伪装的时间
    线程池
    修练8年C++面向对象程序设计之体会
    使用RESTClient插件数据模拟(GET,POST)提交
    :施密特建议尾随年轻的专业人士了解技术公司
    社会保障系列1《介绍》
    Centos根据系统VPS安装SendMail组件使WordPress支持E-mail
    Codeforces Round #107 (Div. 2)---A. Soft Drinking
    [Unity3D]Unity3D游戏开发3D选择场景中的对象,并显示轮廓效果强化版
    怎么样ubuntu 64 11.04 在执行32位程序
  • 原文地址:https://www.cnblogs.com/LinxiHuang/p/9286484.html
Copyright © 2020-2023  润新知