appium (一)

appium 介绍

 appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的。可用于IOS和Android操作系统。重要的是Appium是跨平台的,何为跨平台,意思就是可以针对不同的平台用一套api来编写测试脚本

  • 原生应用:指用android或ios的sdk 编写的应用,如纯java编写的应用
  • 移动网页应用:指网页应用,类似ios中safari应用或者Chrome应用或者类浏览器的应用
  • 混合应用:指一种包裹webview的应用,原生应用于网页应用内容交互的应用

环境搭建

hello world

打开手机的设置界面

from appium import  webdriver
import time

desired_caps = dict()
# 平台名称,大小写可以忽略
desired_caps['platformName'] = 'Android'
# 主版本正确即可 如:7.1 / 7.1.2 都可以
desired_caps['platformVersion'] = '7'
# 可以随便写
desired_caps['deviceName'] = 'emulator'
# 包名
desired_caps['appPackage'] = 'com.android.settings'
# 界面名
desired_caps['appActivity'] = '.Settings'

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

time.sleep(5)

driver.quit()

启动过程:

1.python代码会访问本机的appium服务器,并获取driver对象
2.appium会将我们的driver对象调用的方法转化为post请求,提交给appium服务器
3.appium 通过接收到的post请求发送给手机,再由手机进行执行

基础API

# 跳转到其他app
driver.start_activity('com.android.contacts', '.activities.PeopleActivity')

# 输出包名和界面名
print(driver.current_package)
print(driver.current_activity)

# 将应用至于后台, 参数:秒
driver.background_app(seconds)

# 关闭当前app
driver.close_app()

appium 实现原理

https://www.jianshu.com/p/30b3b2d6b901

uiautomatorviewer 的使用

位置:

使用:

  • 双击直接打开uiautomatorviewer.bat,

  • 模拟器或真机打开app

  • 点击第二个按钮

  • 点击想要获得的元素

根据uiautomatorviewer 找到的值在APPIUM 定位元素

# 找到设置-放大镜-点击
driver.find_element(By.ID, 'com.android.settings:id/search').click()

# 在搜索框输入hello, CLASS_NAME定位不唯一,如果找到多个值,会取第一个值
driver.find_element(By.CLASS_NAME, 'android.widget.EditText').send_keys('hello')
sleep(2)
# 点击返回
driver.find_element(By.XPATH, '//*[@content-desc = "收起"]').click()

注意:
find_element(): 找不到到元素会抛出异常
find_elements(): 找不到元素返回一个空的列表

posted @ 2022-02-26 22:56  chuangzhou  阅读(234)  评论(0编辑  收藏  举报