Appium知识点汇总

Appium学习04-选择(定位)元素

2018-08-16  本文已影响77人  残阳夕露

Appium学习笔记目录

本文包含内容

  1. 通过id定位元素
  2. 通过class_name定位元素
  3. 通过content-desc定位元素
  4. 通过text定位元素
  5. 通过xpath定位元素
  6. 实例代码

元素定位

driver.find_element_by_xxx
driver.find_elements_by_xxx
ele.find_element_by_xxx
ele.find_elements_by_xxx

通过id定位元素find_element_by_id

# resource-id = 'io.manong.developerdaily:id/edt_phone'
driver.find_element_by_id("io.manong.developerdaily:id/edt_phone")

通过class_name定位元素find_element_by_class_name

driver.find_element_by_class_name('android.widget.Button')

通过content-desc定位元素find_dlement_by_accessibility_id

driver.find_dlement_by_accessibility_id('test')

通过text定位元素driver.find_element_by_android_uiautomator("text('xxx')")

driver.find_element_by_android_uiautomator("text('热点')")

通过xpath定位元素

# 方法一:xpath
xpath = "//*[@resource-id='io.manong.developerdaily:id/tab_layout']//android.widget.RelativeLayout[2]"
driver.find_element_by_xpath(xpath)

# 方法二:xpath+index
xpath = "//*[@resource-id='io.manong.developerdaily:id/tab_layout']//android.widget.LinearLayout//[@index=1]"
driver.find_element_by_xpath(xpath)

实例代码

# coding=utf-8

from appium import webdriver
import time,traceback

desired_caps = {}  # 定义字典:告诉appium我们的一些配置
desired_caps['platformName'] = 'Android'  # 固定值
desired_caps['platformVersion'] = '6'  # android版本
desired_caps['deviceName'] = 'test'  # 连接多个设备时会用到 ?
# desired_caps['app'] = r'/Users/liuhuaiyuan/Downloads/toutiao.apk' # apk在电脑上的路径
desired_caps['appPackage'] = 'io.manong.developerdaily' # apk的package  通过aapt命令查找
desired_caps['appActivity'] = 'io.toutiao.android.ui.activity.LaunchActivity' # 指定apk的启动界面(通常启动界面是唯一的) 通过aapt命令查找
desired_caps['unicodeKeyboard']  = True  # 安装中文输入法,以便于控制,及部分中文的输入
desired_caps['resetKeyboard']  = True  # 针对上一条语句,如果手机还有其他的输入法,还原输入法,便于其他操作
desired_caps['noReset'] = True   # 重要参数,=True 恢复默认值,=False(缺省值) 每次都是从刚安装app的状态进入(格式化状态),可能会显示欢迎页等
desired_caps['newCommandTimeout'] = 6000  # 设置等待时间,当超过这个时间时,将断开与appium的连接。单位是秒
#启动Remote RPC
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps ) # 连接appium,并将参数(字典)传入,执行完此句后,与appium创建一个session
# 0.0.0.0:4723
try:
    driver.implicitly_wait(10)  # 隐式等待,每0.5秒查询一次,直到指定时间,结束。单位是秒

    # 根据id找到元素,并点击,id和 html 元素的id不同
    driver.find_element_by_id("io.manong.developerdaily:id/tab_bar_plus").click()
    time.sleep(1)

    # 定位到密码方式登录
    driver.find_element_by_xpath("//*[@resource-id='io.manong.developerdaily:id/tab_layout']//android.widget.RelativeLayout[2]").click()

    driver.find_element_by_id("io.manong.developerdaily:id/edt_phone").send_keys('13917768034')
    driver.find_element_by_id("io.manong.developerdaily:id/edt_password").send_keys('HUAIYUAN1990')


    time.sleep(2)
    # 点击登录
    driver.find_element_by_id('io.manong.developerdaily:id/btn_login').click()
    pass

except:
    print (traceback.format_exc())


driver.quit()

上一篇 下一篇

猜你喜欢

热点阅读