Appium使用

1.安装

pip install Appium-Python-Client

2.基本使用

import time

from appium import webdriver

desired_caps = dict()
desired_caps['platformName'] = 'Android'  # 大小写无所谓,但是不能乱写
desired_caps['platformVersion'] = '5.1.1'  # 不能写错
desired_caps['deviceName'] = 'Android Emulator'  # android 可随便写,但不能不写;ios不能随便写
desired_caps['unicodekeyboard'] = True  # 允许输入中文
desired_caps['resetkeyboard'] = True  # 允许输入中文
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'

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

time.sleep(1)
# 打开一个页面
driver.start_activity('com.android.contacts', '.activities.PeopleActivity')
# driver.current_package
# driver.current_activity

time.sleep(1)
# driver.close_app() #关掉当前app
# driver.install_app("1.apk") #安装apk
# driver.remove_app("com.android.xxx") #卸载apk
# driver.is_app_installed("com.android.xxx") #是否安装某app
# driver.background_app(3) #将应用置于后台3秒后自动切回前台
driver.quit()

3.元素定位

1. uiautomatorviewer

在sdk/tools/bin/uiautomatorviewer.bat
先用该工具找到布局参数
在这里插入图片描述
1.保证想要查看的元素在当前屏幕上;
2.打开uiautomatorviewer,点击左上角第二个按钮截屏
3.如果点击时报错,adb kill-server,adb start-server

2.取元素方式

** 取单个**

# driver.find_element_by_id("com.android.settings:id/search")
# driver.find_element_by_class_name("android.widget.TextView")
driver.find_element_by_xpath("//*[contains(@text,'更多')]").click()

取多个

driver.find_elements_by_id("com.android.settings:id/search")
#其它同理
3.元素等待
1.隐式等待

driver.implicitly_wait(10)
统一设置等待时长,之后程序里所有的 find_Element_xxx 方法都会以这个设置为准,找不到元素时等待 10 秒,10 秒内找到立即执行下面操作,超过 10 秒还找不到,就报 NosuchElementException 异常。

2.显式等待

显式等待只针对某一个找元素操作单独设置等待时间和频率,其它没写 WebDriverWait 的找元素操作不会等待,找不到直接报错。
button = WebDriverWait(driver, 5, 1).until(lambda x: x.find_element_by_xpath("//*[contains(@text,'更多')]"))
等待 5 秒,每1秒检查一次这个元素在不在,找到后立即往下执行,超过 5 秒还找不到,报 TimeoutException。

4.元素操作

1.基本操作
element.click() # 点击
el.send_keys(value) # 输入文字
el.clear() # 清空输入框内容
el.text # 获取元素文本内容
# el.location #位置
# el.size # 宽高

有时不能输入中文,在前置参数中加入下面两行就行了:

desired_caps['unicodekeyboard'] = True  # 允许输入中文
desired_caps['resetkeyboard'] = True  # 允许输入中文
2.取属性值
3.滑动
1.滑动的事件方法

1.swipe
driver.swipe()
特点:参数是坐标点,根据持续时间决定惯性大小
2.scroll
driver.scroll()
参数是元素,从一个元素滑动到另一个元素,有惯性
3.drag_and_drop
driver.drag_and_drop()
参数是元素,从一个元素滑动到另一个元素,没惯性,滑的比较准确

2.事件选择

无非考虑两点:考虑是传入坐标还是元素;考虑要不要有惯性;
传元素:
有惯性用 scroll,无惯性用 drag_and_drop
传坐标:只能用swipe,想要有惯性就设置短的duration,否则设置长的duration。

4.复杂手势 TouchAction
# 找到要操作的元素
search_el = driver.find_element_by_id("com.android.settings:id/search")
# 创建action对象
action = TouchAction(driver)
# 点击元素
action.tap(search_el)
# 开始执行
action.perform()
按下:press
抬起:release
# 按下坐标位置等2s后抬起
action.press(x=100, y=100).wait(2000).release().perform()
# 和上面一样的效果
action.long_press(x=100, y=100,duration=2000).perform()

怎么取坐标点?
在这里插入图片描述

4.其它操作

1.分辨率,截图
# 取设备分辨率
print(driver.get_window_size())
# 截图
driver.get_screenshot_as_file('screen.png')
2.网络状态:

driver.network_connection
在这里插入图片描述

# 设置当前网络为飞行模式
driver.set_network_connection(1)
3.发送键值
# 按返回键
driver.press_keycode(4)
4.通知栏
# 打开通知栏,2秒后关闭通知栏
driver.open_notifications()
time.sleep(2)
driver.press_keycode(4)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值