Appium自动化常用的API接口

本文详细介绍了Appium自动化测试中常用的核心API接口,包括创建和结束会话、页面操作、设备控制、元素交互、日志管理和性能数据获取等。通过这些接口,可以实现对移动应用的全面自动化测试。
  1. 创建新的会话(session)
#python Android
from appium import webdriver
desired_caps = {
'platformName': 'Android',
'platformVersion': '7.0',
'deviceName': 'Android Emulator',
'automationName': 'UiAutomator2',
'app': PATH('/path/to/app')
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
#python IOS 篇
from appium import webdriver
disapp = {
    "platformName": "ios",
    "platformVersion": "13.3",
    "app": "/Users/lileilei/Library/Developer/Xcode/DerivedData/KnowingLife-algbavbxvxbalpfghgvtdxzyehwr/Build/Products/Debug-iphonesimulator/KnowingLife.app",
    "automationName": "XCUITest",
    "udid": "6A367568-AE13-49A0-BEE2-3B1AD623AB3E",
    "deviceName": "iPhone 11 Pro Max"
}
driver = webdriver.Remote('http://0.0.0.0:4723/wd/hub', disapp)
  1. 终止会话
driver.quit()
  1. 后退
driver.back()
  1. 屏幕截图
screenshotBase64 = self.driver.get_screenshot_as_base64()
  1. 获得页面源码
source = self.driver.page_source
  1. 设置超时
driver.set_page_load_timeout(8000)
  1. 设置隐式等待超时时间
driver.implicitly_wait(5)
  1. 设置脚本超时时间
driver.set_script_timeout(8000)
  1. 获取显示方面,横屏竖屏
orientation = driver.orientation
  1. 设置显示方向
driver.orientation = "LANDSCAPE"
  1. 获得地理位置
location = driver.location()
  1. 设置地理位置
driver.set_location(53, 173, 40)
  1. 获得可用的日志类型
log_types = driver.log_types
  1. 获得日志对象
logs = driver.get_log('driver')
  1. 记录事件
driver.log_event('appium', 'funEvent')
  1. 获取事件
driver.get_events()
driver.get_events(['event1', 'event2'])
  1. 更新设备的设置项
driver.update_settings({"sample": "value"}))
  1. 提取设备的设置项
driver.get_settings
  1. 启动Activity
driver.start_activity("com.example", "ActivityName")
  1. 获取当前的Activity名称
driver.current_activity
  1. 获取当前的包名
driver.current_package
  1. 安装应用
driver.install_app('/Users/johndoe/path/to/app.apk')
  1. 检查设备上是否安装了指定的应用程序
driver.is_app_installed('com.example.AppName')
  1. 启动应用
driver.launch_app()
  1. 应用置后台
driver.background_app()
  1. 关闭app
driver.close_app()
  1. 重置应用
driver.reset()
  1. 删除应用
driver.remove_app('com.example.AppName')
  1. 获取剪贴板
self.driver.get_clipboard()
self.driver.get_clipboard_text()
  1. 设置剪贴板
self.driver.set_clipboard('happy testing')
self.driver.set_clipboard_text('happy testing')
  1. 推送文件
dest_path = '/data/local/tmp/test_push_file.txt'
data = bytes('This is the contents of the file to push to the device.', 'utf-8'
)
driver.push_file(dest_path, base64.b64encode(data).decode('utf-8'))
  1. 拉取文件
driver.pull_file('/path/to/device/foo.bar')
  1. 拉取文件夹
driver.pull_folder('/path/to/device/')
  1. 摇一摇
driver.shake()
  1. 锁定
driver.lock()
  1. 解锁
driver.unlock()
  1. 设备是否锁定
driver.is_locked()
  1. 按键Code
driver.press_keycode(10)
  1. 隐藏键盘
driver.hide_keyboard()
  1. 是否显示键盘
driver.is_keyboard_shown()
  1. 切换WiFi
driver.toggle_wifi()
  1. 切换定位服务
driver.toggle_location_services()
  1. 发送短信(只支持模拟器)
driver.send_sms('18866668888', 'hello')
  1. 拨打电话(只支持模拟器)
driver.make_gsm_call('18866668888', GsmCallActions.CALL)
  1. 网络速度
driver.set_network_speed(NetSpeed.LTE)
  1. 获取性能数据,返回支持读取的系统状态信息,例如cpu,内存,网络流量和电池信息
driver.get_performance_data('my.app.package', 'cpuinfo', 5)
  1. 获取性能数据类型
driver.get_performance_data_types()
  1. 开始屏幕录制
driver.start_recording_screen()
  1. 打开通知(仅模拟器)
driver.open_notifications()
  1. 获取系统栏
driver.get_system_bars()
  1. 获取系统时间
time = driver.device_time
time = driver.get_device_time()
time = driver.get_device_time("YYYY-MM-DD")
  1. 元素查找
driver.find_element_by_accessibility_id('SomeAccessibilityID')
  1. 元素组查找
driver.find_elements_by_accessibility_id('SomeAccessibilityID')
  1. 元素点击
el = driver.find_element_by_accessibility_id('')
el.click();
  1. 发送key
driver.find_element_by_accessibility_id('com.android.calculator2:id/digit_1').send_keys('Hello world!')
  1. 清理值
driver.find_element_by_accessibility_id('com.android.calculator2:id/digit_1').clear()
  1. 获取元素的文本
e1=driver.find_element_by_accessibility_id('com.android.calculator2:id/digit_1')
text = el.text
  1. 获取标签名
driver.find_element_by_accessibility_id('com.android.calculator2:id/digit_1').tag_name
  1. 获得元素属性
driver.find_element_by_accessibility_id('com.android.calculator2:id/digit_1').get_attribute('content-desc')
  1. 元素被选中
driver.find_element_by_accessibility_id('com.android.calculator2:id/digit_1').is_selected()
  1. 元素是否可操作性
driver.find_element_by_accessibility_id('com.android.calculator2:id/digit_1').is_enabled()
  1. 元素是否可见
driver.find_element_by_accessibility_id('com.android.calculator2:id/digit_1').is_displayed()
  1. 获得元素定位
driver.find_element_by_accessibility_id('com.android.calculator2:id/digit_1').location
  1. 获取元素大小
driver.find_element_by_accessibility_id('com.android.calculator2:id/digit_1').size
  1. 获取元素矩形
driver.find_element_by_accessibility_id('com.android.calculator2:id/digit_1')
  1. 获取CSS元素的值
driver.find_element_by_accessibility_id('com.android.calculator2:id/digit_1').value_of_css_property("style")
  1. 获取视图中的元素位置
element = self.driver.find_element_by_accessibility_id('com.android.calculator2:id/digit_1')
element.location_in_view
  1. 表单提交
el = self.driver.find_element_by_accessibility_id('com.android.calculator2:id/digit_1')
el.submit()
  1. 获取焦点元素
driver.switch_to.active_element
  1. 获取当前Context
context = driver.current_context
  1. 设置当前Context
webview = driver.contexts[1]
driver.switch_to.context(webview)
  1. 移动到点
actions = ActionChains(driver)
actions.move_to(element, 10, 10)
actions.perform()
  1. Click单击
actions = ActionChains(driver)
actions.move_to_element(element)
actions.click()
actions.perform()
  1. 双击
actions = ActionChains(driver)
actions.move_to_element(element)
actions.double_click()
actions.perform()
  1. 轻按屏幕启用设备
from appium.webdriver.common.touch_action import TouchAction
actions = TouchAction(driver)
actions.tap(element)
actions.perform()
  1. 双击
from appium.webdriver.common.touch_action import TouchAction
actions = TouchAction(driver)
actions.double_tap(element)
actions.perform()
  1. 手指在屏幕上移动
from appium.webdriver.common.touch_action import TouchAction
actions = TouchAction(driver)
actions.tap_and_hold(element)
actions.move_to(element, 50, 50)
actions.perform()
  1. 手指长按触摸屏的事件
from appium.webdriver.common.touch_action import TouchAction
actions = TouchAction(driver)
actions.long_press(element)
actions.perform()
  1. 手指在触摸屏上滚动的运动事件
from appium.webdriver.common.touch_action import TouchAction
actions = TouchAction(driver)
actions.scroll_from_element(element, 10, 100)
actions.scroll(10, 100)
actions.perform()
  1. 手指在触摸屏上滑动的动作事件
from appium.webdriver.common.touch_action import TouchAction
actions = TouchAction(driver)
actions.flick_element(element, 1, 10, 10)
actions.perform()
  1. 执行多点触控动作序列
from appium.webdriver.common.touch_action import TouchAction
from appium.webdriver.common.multi_action import MultiAction
a1 = TouchAction()
a1.press(10, 20)
a1.move_to(10, 200)
a1.release()
a2 = TouchAction()
a2.press(10, 10)
a2.move_to(10, 100)
a2.release()
ma = MultiAction(self.driver)
ma.add(a1, a2)
ma.perform()
  1. 执行触摸动作序列
from appium.webdriver.common.touch_action import TouchAction
actions = TouchAction(driver)
actions.tap_and_hold(20, 20)
actions.move_to(10, 100)
actions.release()
actions.perform()
  1. 切换窗口
driver.switch_to.window("handle")
  1. 关闭窗口
driver.close()
  1. 获取窗口句柄
driver.current_window_handle()
  1. 获取窗口所有的句柄
driver.window_handles()
  1. 获取标题
driver.title
  1. 获取窗口大小
driver.get_window_size()
  1. 设置窗口大小
driver.set_window_size(10, 10)
  1. 获取窗口位置
handle_one_position = self.driver.get_window_position()
handle_two_position = self.driver.get_window_position("handleName")
  1. 设置窗口位置
driver.set_window_position(10, 10)
  1. 最大化窗口
driver.maximize_window()
  1. 回退
driver.back()
  1. 前进
driver.forward()
` ` `  
96. 刷新
```python
driver.refresh()
  1. 获取所有 Cookies(仅是 Web context)
driver.get_cookies()
  1. 设置 Cookie (仅是 Web context)
driver.add_cookie({name: 'foo', value: 'bar'})
  1. 删除 Cookie
driver.delete_cookie("cookie_name")
  1. 删除所有 Cookies
driver.delete_all_cookies()
  1. 切换Frame
driver.switch_to.frame(3)
  1. 切换到父Frame
driver.switch_to.parent()
  1. 执行异步脚本
driver.execute_async_script(‘document.title’)
  1. 执行脚本
driver.execute_script(‘document.title’)
  1. 补充常见的元素定位方式
driver.find_element_by_accessibility_id()
driver.find_element_by_android_uiautomator("new UiSelector().resourceId(\"com.oupeng.mini.android:id/search_engine_title")")
driver.find_element_by_class_name()#class属性是classname
driver.find_element_by_id()
driver.find_element_by_ios_class_chain()
driver.find_element_by_ios_predicate()#仅支持iOS10以上,可以多个属性同时定位
driver.find_element_by_ios_uiautomation()
driver.find_element_by_link_text()
driver.find_element_by_css_selector()
driver.find_element_by_xpath()
driver.find_element_by_partial_link_text()
driver.find_element_by_tag_name()
driver.find_element_by_name()#text属性是name
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西门一刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值