05、appium---基本操作

前面我们说了如何启动app,现在讲一下基本的操作,前提基础是我们启动app,并获取一个driver对象

from appium import webdriver

desired_capabilities = {
  "platformName": "Android",
  "appium:platformVersion": "12",
  "appium:devicesName": "AXMN6R2729001833",
  "appium:appPackage": "com.wepie.snake",
  "appium:appActivity": "com.wepie.snake.app.activity.StartActivity"
}

driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_capabilities)

1、获取屏幕宽高

# 获取屏幕宽度
el_x = driver.get_window_size()['width']
# 获取屏幕长度
el_y = driver.get_window_size()['height']

2、app相关操作

# 关闭app,相当于是退后台
driver.close_app()
# 启动当前app,相当于将退后台的app再次打开
driver.launch_app()
# 将app置于后台5s后再次恢复
driver.background_app(5)
# 卸载重装
driver.reset()
#安装应用 参数为apk包路径
driver.install_app('path/my.apk')
#删除应用  参数为包名
driver.remove_app('xxxxxx')

3、等待方式

强制等待:

import time

# 强制等待
time.sleep(5)

隐性等待: 

# 隐性等待,页面加载完成则执行下一步,没有加载完成,则继续等待直到20秒后再执行下一步
driver.implictly_wait(20)

显性等待:

# 用法例1:
# 引入WebDriverWait
from selenium.webdriver.support.ui import WebDriverWait
# 引入expected_conditions类,并重命名为EC
from selenium.webdriver.support expected_conditions as EC
# 引入By类
from selenium.webdriver.common.by import By
# 设置等待
wait = WebDriverWait(driver,10,0.5)
wait.until(EC.presence_of_element_located((By.ID,'KW')))





# 用法例2:
loc = ("xpath", "//*[@text='允许']")
e = WebDriverWait(driver, 1, 0.5).until(EC.presence_of_element_located(loc))
e.click()

4、键盘操作

driver.hide_keyboard()    # 隐藏键盘,要在键盘出来后使用,否则会报错
driver.deactivate_ime_engine()   # 关闭设备当前的输入法

1)点击元素:

driver.find_element(By.XPATH, "xxxxxx").click()

2)点击并输入:

driver.find_element(By.XPATH, "xxxxxx").send_keys("123")

3)获取元素的文本:

text = driver.find_element(By.XPATH, "xxxxxx").text

4)键盘操作:

# 键盘操作,返回
driver.press_keycode(4)
# 键盘操作,回车
driver.press_keycode(66)

5)滑动swipe:

swpie()方法包含5个参数:起始点坐标(x1,y1)、终点坐标(x2,y2)、移动时长(ms)
只需要考虑坐标的位置,而不太注重屏幕的分辨率。
如何获取手机屏幕的长宽:get_window_size()
如何实现屏幕的滑动:通过长宽上的不同比例的倍数实现滑动的定位,这个注意一下滑动开始和结束的位置

左滑:

driver.swipe(int(w*0.25),int(h*0.5),int(w*0.75),int(h*0.5),1000)

上滑:

driver.swipe(int(w*0.5),int(h*0.75),int(w*0.5),int(h*0.25) ,1000)

举例:

el_x = driver.get_window_size()['width']
el_y = driver.get_window_size()['height']
driver.swipe(int(852/720*el_x), int(1661/1280*el_y), int(852/720*el_x), int(866/1280*el_y), duration=5000)

(注意:这里的坐标只能是int类型,duration单位是ms)

6)点击tap:

driver.tap([(398,1864),(703,1852),],3000) # 实现在这两个坐标,同时点击3秒钟

最多支持5个坐标的同时点击。(注意:点击时间为ms,可不填,最少填一个坐标,最多五个。若不填点击时间,这里默认值为0.1s)

7)缩小和放大:

缩小:pinch()

放大:zoom()

pinch(self, element=None, percent=200, steps=50)   
zoom(self, element=None, percent=200, steps=50)

percent:缩放比例,percent=200就是2倍的比率,steps是步长


举例:我要对以下图片放大两倍

# 定位元素
element = driver.find_element(By.XPATH, "xxxxxx")
sleep(3)
# 放大两倍
driver.zoom(element,200,50)

8)拖拽操作:drag_and_drop

原理:需要两个元素id:
id1:需要拖拽的元素位置id
id2:需要拖拽到达的最终位置id
实例:QQ的未读消息的拖拽取消
代码如下:

# 定位元素
element1=driver.find_element(By.XPATH, "xxx")
element2=driver.find_element(By.XPATH, "xxx")
# 拖拽操作
driver.drag_and_drop(element1[0],element2[0])

还有很多其他操作,可以翻阅相关文档和api

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值