欢迎光临
我们一直在努力

Appium自动化测试|常见模拟操作

Appium自动化测试中的常见模拟操作涵盖了多种用户交互行为,这些操作对于自动化测试框架来说至关重要,因为它们能够模拟真实用户的使用场景,从而验证应用程序的功能和稳定性。

以下是一些Appium自动化测试中常见的模拟操作:

01基本操作

1、点击操作

示例:element.click() 针对元素进行点击操作

2、初始化:输入中文的处理

说明:如果连接的是虚拟机(真机无需加这两个参数,加上可能会影响手工输入),在初始化配置中增加两个参数:

  • "resetKeyboard": True, # 重置设备的输入键盘

  • "unicodeKeyboard": True # 采用unicode编码输入

"resetKeyboard": True, # 重置设备的输入键盘
"unicodeKeyboard": True # 采用unicode编码输入

3、清空和输入操作

element.clear() 针对元素进行清空操作

element.send_keys("value") 针对元素进行输入操作

输入的封装:

def input_text(element, text):
# 清除元素中的文本内容(为了保证代码的健壮性,在输入内容之前需要做一次清除操作。)
element.clear()
# 输入文本内容
element.send_keys(text)

4、获取元素的信息

获取元素的文本内容(获取的是元素text属性的内容)

element.text

获取元素的位置

element.location 返回的值是一个字典,字典中包含x和y , x和y表示的是元素在手机屏幕左上角的点的坐标

获取取元素的大小

element.size 返回值是一个字典,字典中会包含 width和height, width表示的宽度,height表示的高度

获取元素的属性值

element.get_attribute("attribute") # attribute表示的是属性名称

获取ID值时, attribute= “resourceId”

获取的是class的值 , attribute="className"

如果attribute = "name"时,获取的是text或者content-desc(text优先,找不到text值,再去找content-desc的值)

代码示例:​​​​​​​

import time
from appium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from appium.options.android import UiAutomator2Options
from selenium.webdriver.support import expected_conditions as EC

# 定义一个初始化APP的方法
def start_app(app_package, app_activity):

# 定义desired_caps 字典,初始化app的配置信息
desired_caps = {
"platformName": "android", # 表示的是android
"platformVersion": "10", # 表示的是设备系统的版本号
"deviceName": "DWV6R19A10002101", # 表示的是设备的ID名称
"appPackage": app_package, # 表示的是app的包名
"appActivity": app_activity, # 表示的是app的界面名
"newCommandTimeout": 100000,
"noReset": True, # 用来记住app的session,如果有登陆或做过初始化的操作,为True时,后面不需要再操作
"resetKeyboard": True, # 重置设备的输入键盘
"unicodeKeyboard": True # 采用unicode编码输入
}
# 创建 Appium 驱动实例
options = UiAutomator2Options().load_capabilities(desired_caps)
driver = webdriver.Remote("http://localhost:4723/wd/hub", options=options)

# 启动应用程序
driver.wait_activity(desired_caps, 5)
return driver

# 定义一个获取元素的方法
def get_element_new(driver, element):
element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located(element))
return element

# 定义一个输入的封装方法
def input_text(element, text):
# 清除元素中的文本内容(为了保证代码的健壮性,在输入内容之前需要做一次清除操作。)
element.clear()
# 输入文本内容
element.send_keys(text)

if __name__ == "__main__":
# 本次启动的应用程序包名和活动名(作业帮)
app_package_zyb = "com.baidu.homework"
app_activity_zyb = ".activity.index.IndexActivity"

# 启动应用程序
driver_zyb = start_app(app_package_zyb, app_activity_zyb)

# 定位到首页顶部搜索框并点击
element = (By.ID, 'com.baidu.homework:id/tv_homepage_search_item')
search_element = get_element_new(driver_zyb, element)
search_element.click()
# 定位到输入框并输入"英语学习"
element = (By.ID, 'com.baidu.homework:id/index_search_et_search_text')
input_element = get_element_new(driver_zyb, element)
input_text(input_element, '英语学习')

# 获取元素的文本内容(获取的是元素text属性的内容)
print(f"输入框元素的文本信息是: {input_element.text}")
# 获取元素的位置(返回的值是一个字典,字典中包含x和y , x和y表示的是元素在手机屏幕左上角的点的坐标)
print(f"输入框的元素的位置坐标是: {input_element.location}")
# 获取取元素的大小
print(f"输入框元素的文本信息是: {input_element.size}")
'''
获取元素的属性值
element.get_attribute("attribute") # attribute表示的是属性名称
获取ID值时, attribute = “resourceId”
获取的是class的值, attribute = "className"
如果attribute = "name"
时,获取的是text或者content – desc(text优先,找不到text值,再去找content – desc的值)
'''
print(f"输入框元素的ID属性信息是: {input_element.get_attribute('resourceId')}")
print(f"输入框元素的class属性信息是: {input_element.get_attribute('className')}")
print(f"输入框元素的name属性信息是: {input_element.get_attribute('name')}")

# 关闭驱动
time.sleep(3)
print("代码执行完毕")
driver_zyb.quit()

02获取手机操作

1、获取手机分辨率

目的:保证脚本在不同机型上都能实现滑屏的操作。

示例:driver.get_window_size()

说明:返回的值是字典类型, 包含 height 和 width 高度和宽度的值

2、获取手机截图

示例:driver.get_screenshot_as_file(filename)

说明:filename:1、路径必须手动创建 2、文件名称必须是以PNG结尾

3、设置/获取手机网络

目的:主要是为了实现视频类的app中,视频播放过程中网络切换时会有提示信息的操作。

示例:

  • driver.set_network_connection(connectionType) # connectionType 网络类型的值

  • driver.network_connection 获取手机网络

在 Appium 中,网络类型通过

driver.set_network_connection(connection type)

方法进行设置。其中,connection type参数表示需要被设置的网络类型,常用的网络类型有以下几种:

  • 飞行模式:1

  • WiFi 流量:2

  • 数据流量:4

  • 数据和 WiFi 全部打开:6

4、模拟键盘操作

示例:driver.press_keycode(键值)

说明:常用的三个键值:3 HOME键, 4 返回键 , 66 回车键

5、手机通知栏操作

示例:driver.open_notifications()​​​​​​​

import time
from appium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from appium.options.android import UiAutomator2Options
from selenium.webdriver.support import expected_conditions as EC

# 定义一个初始化APP的方法
def start_app(app_package, app_activity):

# 定义desired_caps 字典,初始化app的配置信息
desired_caps = {
"platformName": "android", # 表示的是android
"platformVersion": "10", # 表示的是设备系统的版本号
"deviceName": "DWV6R19A10002101", # 表示的是设备的ID名称
"appPackage": app_package, # 表示的是app的包名
"appActivity": app_activity, # 表示的是app的界面名
"newCommandTimeout": 100000,
"noReset": True, # 用来记住app的session,如果有登陆或做过初始化的操作,为True时,后面不需要再操作
"resetKeyboard": True, # 重置设备的输入键盘
"unicodeKeyboard": True # 采用unicode编码输入
}
# 创建 Appium 驱动实例
options = UiAutomator2Options().load_capabilities(desired_caps)
driver = webdriver.Remote("http://localhost:4723/wd/hub", options=options)

# 启动应用程序
driver.wait_activity(desired_caps, 5)
return driver

# 定义一个获取元素的方法
def get_element_new(driver, element):
element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located(element))
return element

# 定义一个输入的封装方法
def input_text(element, text):
# 清除元素中的文本内容(为了保证代码的健壮性,在输入内容之前需要做一次清除操作。)
element.clear()
# 输入文本内容
element.send_keys(text)

if __name__ == "__main__":
# 本次启动的应用程序包名和活动名(作业帮)
app_package_zyb = "com.baidu.homework"
app_activity_zyb = ".activity.index.IndexActivity"

# 启动应用程序
driver_zyb = start_app(app_package_zyb, app_activity_zyb)

# 获取手机分辨率
print(driver_zyb.get_window_size())
# 获取手机截图
""" 1、路径必须手动创建
2、文件名称必须是以PNG结尾"""
current_time_file = "/error"+str(time.time()) # 通过文件名拼接当前时间戳的方式构造唯一文件名
filename = "/Users/work_related/image" + current_time_file + ".png" # 需要设置正确的路径
driver_zyb.get_screenshot_as_file(filename)

# 设置手机网络为Wi-Fi,然后获取当前手机的网络类型
"""飞行模式:1
WiFi 流量:2
数据流量:4
数据和 WiFi 全部打开:6"""
driver_zyb.set_network_connection(2) # 设置手机网络为Wi-Fi
print(f"当前手机的网络类型是:{driver_zyb.network_connection}") # 获取当前手机的网络类型

# 模拟键盘操作
'''常用的三个键值:3 HOME键, 4 返回键 , 66 回车键'''
# 定位到首页顶部搜索框并点击
element = (By.ID, 'com.baidu.homework:id/tv_homepage_search_item')
search_element = get_element_new(driver_zyb, element)
search_element.click()
# 定位到输入框并输入"英语学习"
element = (By.ID, 'com.baidu.homework:id/index_search_et_search_text')
input_element = get_element_new(driver_zyb, element)
input_text(input_element, '英语学习')
# 返回到上一页
driver_zyb.press_keycode(4)
time.sleep(3)
# home键返回
driver_zyb.press_keycode(3)
time.sleep(3)

# 打开手机通知栏
driver_zyb.open_notifications()

# 关闭驱动
time.sleep(3)
print("代码执行完毕")
driver_zyb.quit()

赞(0)
未经允许不得转载:171主机测评 » Appium自动化测试|常见模拟操作
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址