zoukankan      html  css  js  c++  java
  • Python+Appium学习篇之元素定位

    背景:

    QQ邮箱为例;APPIUM版本=1.8

    1. list下标定位

    先看两个定位信息

    可以看出这里的  收件箱  和 星标邮件 的resource-Id 是一样的,这里就可以用list来定位  收件箱 了

    u'''list下标定位'''
    driver.find_elements_by_id('com.tencent.androidqqmail:id/q0')[0].click()

    2.xpath定位

    在这里可以看成是一个万能的定位,只要后面的  收件箱 文本是唯一的就行

    u'''xpath定位'''
    driver.find_element_by_xpath("//*[@text='收件箱​']").click()

    3.content-desc定位

    这里就用 accessibility_id 来定位

    u'''con-desc定位'''
    driver.find_element_by_accessibility_id('写邮件和设置等功能').click()

    4.文本定位

    这里就用到 uiautomator 了

    u'''文本定位'''
    ele='text("收件箱​")'
    driver.find_element_by_android_uiautomator(ele).click()

    5.组合定位

    组合定位可以更精准,这个可以自由搭配(index+text,classname+id等等)

    u'''组合定位(id+text)'''
    ele='resourceId("com.tencent.androidqqmail:id/q0").text("收件箱​")'
    driver.find_element_by_android_uiautomator(ele).click()

    6.父子定位

    这里就来定位  写邮件和设置等功能 按钮

     

    可以找到找到儿子的 resourceId

    这里可以找到父亲的classname

    父亲写前面,儿子写后面

    u'''父子定位'''
    ele='className("android.widget.RelativeLayout").childSelector(resourceId("com.tencent.androidqqmail:id/f"))'
    driver.find_element_by_android_uiautomator(ele).click()

    7.兄弟定位

      

    找到能定位他们两个的东东,这里就找了 resourceId

    u'''兄弟定位'''
    ele='resourceId("com.tencent.androidqqmail:id/k").fromParent(resourceId("com.tencent.androidqqmail:id/f"))'
    driver.find_element_by_android_uiautomator(ele).click()

    8.包含定位

    u'''包含定位'''
    driver.find_element_by_xpath("//*[contains(text(),'【抢票】我能抢到票吗')]").click()

    总代码:

    # coding:utf-8
    from appium import webdriver
    import time
    desired_caps = {'platformName': 'Android',
                    'deviceName': 'emulator-5554',
                    'platformVersion': '5.1.1',
                    'noReset': True,
                    'appPackage': 'com.tencent.androidqqmail',
                    'appActivity': 'com.tencent.qqmail.launcher.desktop.LauncherActivity'}
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
    time.sleep(15)  #用的模拟器,sleep久点
    a=driver.find_elements_by_id('com.tencent.androidqqmail:id/q0')
    
    print(len(a))  #主要是打印出来看看有多少个
    time.sleep(3)
    u'''list下标定位'''
    #driver.find_elements_by_id('com.tencent.androidqqmail:id/q0')[0].click()
    u'''xpath定位'''
    #driver.find_element_by_xpath("//*[@text='收件箱​']").click()
    u'''con-desc定位'''
    #driver.find_element_by_accessibility_id('写邮件和设置等功能').click()
    u'''文本定位'''
    #ele='text("收件箱​")'
    #driver.find_element_by_android_uiautomator(ele).click()
    u'''组合定位(id+text)'''
    #ele='resourceId("com.tencent.androidqqmail:id/q0").text("收件箱​")'
    #driver.find_element_by_android_uiautomator(ele).click()
    u'''父子定位'''
    #ele='className("android.widget.RelativeLayout").childSelector(resourceId("com.tencent.androidqqmail:id/f"))'
    #driver.find_element_by_android_uiautomator(ele).click()
    u'''兄弟定位'''
    ele='resourceId("com.tencent.androidqqmail:id/k").fromParent(resourceId("com.tencent.androidqqmail:id/f"))'
    driver.find_element_by_android_uiautomator(ele).click()
    print('点击完毕')
  • 相关阅读:
    程序员生存定律--成长路上常见的坑
    程序员生存定律--升华成高手的可能方法
    程序员生存定律--如何尽快变的稍微专业一点
    程序员生存定律--编程的起点与可能的失足
    一段旅程的结束和另一端旅程的开始
    Cesium教程系列汇总
    数据可视化之总结
    可视化之Earth NullSchool
    可视化之AQICN
    可视化之Berkeley Earth
  • 原文地址:https://www.cnblogs.com/luobobobo/p/9336631.html
Copyright © 2011-2022 走看看