appium 常用命令

  1. 常用定位方式
  2. 定位一组元素
  3. 发送数据到输入框
  4. 获取元素的文本内容
  5. 获取元素的属性值
  6. 清空输入框内容
  7. 将应用置于后台事件
  8. 手机截图

常用定位方式

  • 前置代码
from appium import webdriver
# server 启动参数
desired_caps = {}
# 设备信息
desired_caps['platforName'] = 'Android'   #平台名称
desired_caps['paltformVersion'] = '5.1'    #平台版本
desired_caps['deviceName'] = '192.168.56.101:5555'  #设备号
# app信息
desired_caps['appPackage'] = 'com.android.settings'  #应用的包名
desired_caps['appActivity'] = '.Settings'  #代表启动的activity
# 生命driver对象
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
  • id
方法:find_element_by_id(id_value) # id_value:为元素的id属性值
需求:
    通过id定位方式点击搜索按钮
举例:
driver.find_element_by_id("com.android.settings:id/search").click()
driver.quit()
  • class
方法:find_element_by_class_name(class_value) # class_value:为元素的class属性值
需求:
    1.进入设置页面
  2.点击搜索按钮
  3.通过class定位方式点击输入框的返回按钮

举例:
driver.find_element_by_id("com.android.settings:id/search").click()
driver.find_element_by_class_name("android.widget.ImageButton").click()
driver.quit()
  • xpath
方法:find_element_by_xpath(xpath_value) # xpath_value:为可以定位到元素的xpath语句

Android端常用属性定位:
1. id ://*[contains(@resource-id,'com.android.settings:id/search')]
2. class ://*[contains(@class,'android.widget.ImageButton')]
3. text ://*[contains(@text,'WLA')]

模糊定位
4. contains(@key,value): value可以是部分值

需求:
    1. 进入设置页面
    2. 点击wlan菜单栏

示例:
driver.find_element_by_xpath("//*[contains(@text,'WLA')]").click()
driver.quit()

定位一组元素

应用场景为元素值重复,无法通过元素属性直接定位到某个元素,只能通过elements方式来选择,返回一个定位对象的列表.

通过Xpath定位一组元素

方法: find_elements_by_xpath(xpath_value)
需求:
    1. 进入设置页面
    2. 点击wlan菜单栏,xpath中class属性定位列表中第3个对象

data = driver.find_elements_by_xpath("//*[contains(@class,'android.widget.TextView')]")
data[3].click()

通过id定位一组元素

方法: find_elements_by_id(id_value) 
需求:
    1. 进入设置页面
    2. 点击wlan菜单栏,id定位对象列表中第2个

title = driver.find_elements_by_id("com.android.settings:id/title")
# 打印title类型,预期为list
print(type(title))
# 取title返回列表中的第一个定位对象,执行点击操作
title[1].click()

通过class定位一组元素

方法: find_elements_by_class_name(class_value)
需求:
    1. 进入设置页面
    2. 点击wlan菜单栏,选择定位对象是第3个

title = driver.find_elements_by_class_name("android.widget.TextView")
# 打印title类型,预期为list
print(type(title))
# 取title返回列表中的第3个定位对象,执行点击操作
title[3].click()

发送数据到输入框

方法:send_keys(vaue) # value:需要发送到输入框内的文本

需求:
    打开设置 点击搜索按钮 输入内容abc

# 点击搜索按钮
driver.find_element_by_id("com.android.settings:id/search").click()
# 定位到输入框并输入abc
driver.find_element_by_id("android:id/search_src_text").send_keys("abc")


注: 如果插入中文,需要在desired_caps里面增加2个参数:
desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True

获取元素的文本内容

方法: text

需求: 
    进入设置,获取所有元素class属性为"android.widget.TextView"的文本内容

代码:
text_vlaue = driver.find_elements_by_class_name("android.widget.TextView")
for i in text_vlaue:
        print(i.text)
    

获取元素的属性值

方法: get_attribute(value) # value:元素的属性
1. value='name' 返回content-desc / text属性值
2. value='text' 返回text的属性值
3. value='className' 返回 class属性值,只有 API=>18 才能支持
4. value='resourceId' 返回 resource-id属性值,只有 API=>18 才能支持

需求:
    进入设置 获取wlan属性

data = driver.find_element_by_id("com.android.settings:id/title")
print(data.get_attribute(‘resourceId’))

清空输入框内容

方法:clear()

需求:
    打开设置 点击搜索按钮  输入内容abc 删除已输入abc

driver.find_element_by_id("com.android.settings:id/search").click()
# 定位到输入框并输⼊abc
input_text = driver.find_element_by_id("android:id/search_src_text")
# 输入abc
input_text.send_keys("abc")
time.sleep(1)
# 删除abc
input_text.clear()

将应用置于后台事件

方法: background_app(seconds)
参数:
 seconds: 停留在后台时间,单位,秒

需求:
    进入设置,将app至于后台5s

driver.background_app(5)

手机截图

截取 手机当前屏幕,保存指定格式图片到指定位置

方法:get_screenshot_as_file(filename)
参数:
filename:指定路径下,指定格式的图⽚.

需求:
    打开设置页面,截图当前页面,命名为screen.png

代码实现:
import os
driver.get_screenshot_as_file(os.getcwd() + os.sep + './screen.png')

# os.getcwd()函数 获得当前的路径。

# python是跨平台的。在Windows上,文件的路径分隔符是'\',在Linux上是'/'。
为了让代码在不同的平台上都能运行,那么路径应该写'\'还是'/'呢?
使用os.sep的话,就不用考虑这个了,os.sep根据你所处的平台,自动采用相应的分隔符号。

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。

文章标题:appium 常用命令

本文作者:伟生

发布时间:2019-11-21, 12:49:22

最后更新:2019-11-21, 13:23:10

原始链接:http://yoursite.com/2019/11/21/ceshi_07_appium_order/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏