appium笔记

 启动app:

在一个app界面跳转其他app:

通过driver对象调用start_activity

driver.start_activity("包名","界面名")

当前包名和界面名:

driver.current_package

driver.current_activity

判断是否安装app:

driver.is_app_installed("com.google.android.youtube")

卸载app:

driver.remove("com.google.android.youtube")

安装app:

driver.install_app("/Users/com.google.android.youtube.apk")

将页面置于后台一段时间后再回到前台(模拟按home键进行热启动):

driver.background_app(seconds=10) #单位s,会自动回到前台

UIAutomatorViewer(或使用appium inspector)

可用于定位元素,在sdk下

mac:tools/bin          其实我没在sdk下找到tools文件夹,所以还是用appium inspector

元素定位API

driver.find_element_by_id('id')
# 现在一般用下面这种形式
driver.find_element(by=By.ID, value='id')

定位并点击

search_button = driver.find_element_by_id("id")
search_button.click()

输入文本

search_button.send_keys("hello")

重新输入用户名

username_input.click()
username_input.clear()
username_input.send_keys(username)

定位一组元素时使用find_elements,可批量获取某些相同特征的元素

 元素等待:由于加载速度慢等原因,不能立刻通过find_element方法获取到元素,需要等待元素出现才能获取。

隐式等待:

所有定位元素等待的时间设置为同一个值时。若要设置在5s内找到就立刻点击,找不到就报错:

driver.implicitly_wait(5)
driver.find_element(by=By.ID, value='id')

但隐式等待设置一次对所有元素定位生效,若想针对不同元素设置不同的等待时间,则需要进行显示等待:

from selenium.webdriver.support.wait import WebDriverWait
# 调用WebDriverWait类,设置超时时间为5s
wait = WebDriverWait(driver, 5)
# until函数内传的是方法,默认每隔0.5s调用一次该方法,直到找到元素为止
back_button = wait.until(lambda x: x.find_element(by=By.ID, value='com.youtobe.id.int:id/btn'))
back_button.click()


# 一般写时将上几行代码精简(使用显示等待,在5s的时间内每1s找一次):
WebDriverWait(driver, 5, 1).until(lambda x: x.find_element(by=By.ID, value='com.youtobe.id.int:id/btn')).click()

获取文本内容:

title = driver.find.element(**).text()

获取元素位置和大小:

location = driver.find.element(**).location
size = driver.find.element(**).size

获取元素属性值:

title = driver.find_element(**)

title.get_attribute('enabled')
title.get_attribute('text')

滑动屏幕(有三种方法):

1)swipe:从一个坐标位置滑动到另一个坐标位置,只能是两个点之间的滑动 

driver.swipe(start_x, start_y, end_x, end_y, duration=None)

为什么每次滑动都会有一定的误差(即两次滑动的距离不完全相同):

        cpu计时器会受其它运行程序的影响

2)scroll:从一个元素滑动到另一个元素,直到页面自动停止(不设置持续时间,惯性很大)

3)drag_and_drop:从一个元素滑动到另一个元素,直到第二个元素替换掉第一个元素所在的位置(不设置持续时间,没有惯性)

 高级手势TouchAction

步骤:

1)创建TouchAction对象

2)通过对象调用想要执行的手势

3)使用perform()执行

手指轻敲:

from appium.webdriver.common.touch_action import TouchAction
ele = driver.find_element(by=By.ID, value='com.youtobe.id.int:id/btn')
TouchAction(driver).tap(ele).perform()
# 使用TouchAction可以点击任意坐标上的一点(click无法做到)
TouchAction(driver).tap(x=100, y=100).perform()
# tap还可传入次数,默认为单击,count = 1;当想要双击时,count = 2
TouchAction(driver).tap(x=100, y=100, count=2).perform()

按下:

TouchAction(driver).press(x=100, y=100).perform()

按下后抬起:

TouchAction(driver).press(x=100, y=100).release().perform()

按下后等待并抬起:

TouchAction(driver).press(x=100, y=100).wait(2000).release().perform()
# 相当于长按

长按:

TouchAction(driver).long_press(x=100, y=100, duration=2000).perform()

移动(可用于图案解锁):

TouchAction(driver).press(x=100, y=100).move_to(x=200, y=200).release().perform()

手机操作API

获取手机分辨率:

driver.get_window_size()

截图并保存:

driver.get_screenshot_as_file(os.getcwd() + os.sep + './screen.png')

获取手机网络:

driver.network_connection()

设置手机网络:

driver.set_network_connection(1) # 设置为飞行模式

发送键到设备:

 操作手机通知栏:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

进阶的小幺

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

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

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

打赏作者

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

抵扣说明:

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

余额充值