概述
以下代码,全部放开执行会出报错,可以放开部分代码在IDE中执行,
另附我在网上看到的优质API资源文档地址:
https://blog.csdn.net/zhongbeida_xue/article/details/51210577
import time
from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
from selenium.webdriver.support.ui import WebDriverWait
desired_caps = dict()
# TODO:指定要测试的平台,不区分大小写
desired_caps['platformName'] = 'Android'
# TODO:指定平台版本
desired_caps['platformVersion'] = '8.0.0'
desired_caps['deviceName'] = '192.168.120.103:5555'
# TODO:以下两行指定打开的包名和activity名
desired_caps['appPackage'] = 'com.android.settings'
# desired_caps['appActivity'] = '.Settings'
desired_caps['appActivity'] = '.ChooseLockPattern'
# todo: 加入以下两行代码可以保证输入框输入中文
desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
# time.sleep(2)
# todo: 获取当前运行的应用包名和activity名
print(driver.current_package + '/' + driver.current_activity)
# # TODO: 通过id 获取元素
# list_id = driver.find_elements_by_id('android:id/title')
# todo:通过xpath获取一组元素
# for title in list_id:
#
print(title.tag_name+'t'+title.text+'t'+title.id+'t')
# driver.find_element_by_xpath('//*[@text="显示"]').click()
# time.sleep(1)
# todo: 启动应用
# driver.start_activity('com.android.messaging', '.ui.conversationlist.ConversationListActivity')
# print(driver.current_package+'/'+driver.current_activity)
# TODO: 根据包名判断是否应用已经安装
# if driver.is_app_installed('cn.goapk.market'):
#
todo: 卸载应用
#
driver.remove_app('cn.goapk.market')
# todo: 安装应用
# driver.install_app('D:/SOFTWARE/Genymotion/Apk/anzhishichang.apk')
# time.sleep(1)
# todo: 切换到后台运行,参数是指在后台停留的时间,时间结束会自动返回前台
# driver.background_app(2)
# time.sleep(1)
# TODO:通过xpath获取带有‘设’字的元素
# list_she = driver.find_elements_by_xpath('//*[contains(@text,"设")]')
# print(len(list_she))
# for she_ in list_she:
#
print(she_.text)
# todo: 元素等待---加载指定的时长,等待元素出现,若超时仍未出现元素,报错,在指定时长内找到元素,则继续往下执行
#
隐式等待:
#
示例:driver.implicitly_wait(20)
#
显式等待:在total_time的时间内,每flu_time秒检查一次(默认0.5秒检查一次),若找到元素,就继续往下执行,否则报超时错误
#
步骤:1。导包 2.创建WebDriverWait对象 3.调用util方法
#
示例:wait_driver = WebDriverWait(driver,total_time,flu_time)
#
display_text = wait_driver.util(lambda x: x.find_element_by_xpath('//*[@text="显示"]'))
#
display_text.click()
# 点击搜索按钮
# wait_search_btn = WebDriverWait(driver, 5, 1).until(lambda x: x.find_element_by_xpath('//*[@content-desc="在设置中搜索"]'))
# wait_search_btn.click()
# search_button = driver.find_element_by_xpath('//*[@content-desc="在设置中搜索"]')
# # search_button.click()
# search_button_input = driver.find_element_by_id('android:id/search_src_text')
# # TODO:文本框输入
# search_button_input.send_keys('hello')
# time.sleep(2)
# # TODO:清空文本框文本
# search_button_input.clear()
# time.sleep(2)
# # TODO:文本框输入中文需要再上边添加两行代码
# search_button_input.send_keys('你好')
# todo: 获取控件的宽和高
# print(wait_search_btn.size)
# print(wait_search_btn.size['width'])
# print(wait_search_btn.size['height'])
# todo: 获取控件的坐标位置
# print(wait_search_btn.location)
# print(wait_search_btn.location['x'])
# print(wait_search_btn.location['y'])
# todo: 根据属性名获取元素值
# element_values = driver.find_elements_by_id('android:id/title')
# for i in element_values:
#
print(i.get_attribute('name'), end='t')
#
print(i.get_attribute('resourceId'), end='t')
#
print(i.get_attribute('className'), end='t')
#
print(i.get_attribute('text'))
# todo : 屏幕滑动
#
-swipe
#
-scroll
#
-drag_and_drop
# todo:1)swipe
----- 参数【start_x,start_y,end_x,end_y,滑动步长(单位:ms)】
# driver.swipe(720, 1500, 720, 200, 1500)
# todo:2)scroll ----- 参数【滑动起始控件,滑动结束控件,步长】
# display_btn = driver.find_element_by_xpath('//*[@text="显示"]')
# settings_btn = driver.find_element_by_xpath('//*[@text = "设置"]')
# driver.scroll(display_btn, settings_btn, 1000)
# driver.drag_and_drop(display_btn,settings_btn)
# todo:3)drag_and_drop ----- 拖拽 参数【起始位置控件,结束位置控件,步长】
# driver.close_app()
# web_btn = driver.find_element_by_xpath('//*[@text="WebView Browser Tester"]')
# email_btn = driver.find_element_by_xpath('//*[@text="电子邮件"]')
# driver.drag_and_drop(web_btn, email_btn)
# todo: tap -- 模拟多个手指点击屏幕,最多五个手指
# driver.tap([(100, 620), (100, 360), (100, 500)], 500)
# todo:
#
TouchAction高级手势,可以将小的动作组合成一系列复杂的动作
#
--tap
#
--press
#
--release
#
--long_press
# todo: 1)tap :轻敲---参数可以直接传控件元素【要操作的控件,与。click效果一致】也可以传坐标 如:【x=100,y=100】(x=和y=不能省略)
# TouchAction(driver).tap(x=850, y=1550).perform()
# TouchAction(driver).tap(display_btn).perform()
# todo:
#
2)press 按下--参数【x=100,y=100】
#
3)release 抬起
# TouchAction(driver).press(x=200,y=540).release().perform()
# todo:
#
4)long_press 长按
参数【x,y,步长】
# TouchAction(driver).press(650, 650).wait(2000).release().perform()
# 与long_press方法效果一直
# TouchAction(driver).long_press(650, 650, 2000)
# todo:5)move_to 移动 参数【x,y】
# TouchAction(driver).press(x=225, y=960).move_to(x=540, y=960).perform()
# time.sleep(10)
# todo:获取手机分辨率
print(driver.get_window_size())
# todo:截图 参数【存放的路径】
driver.get_screenshot_as_file('/Screenshots/foo.png')
# todo: 获取手机网络状态
print(driver.network_connection)
# todo: 设置手机网络 参数【ConnectionType】如下
'''
Possible values:
Value (Alias)
| Data | Wifi | Airplane Mode
-------------------------------------------------
0 (None)
| 0
| 0
| 0
1 (Airplane Mode)
| 0
| 0
| 1
2 (Wifi only)
| 0
| 1
| 0
4 (Data only)
| 1
| 0
| 0
6 (All network on) | 1
| 1
| 0
These are available through the enumeration `appium.webdriver.ConnectionType`
'''
driver.set_network_connection(2)
time.sleep(3)
'''
需求:三次音量+ 返回 两次音量—
'''
# todo: 发送键到设备-----更多的keyCode值百度搜索android keyCode就能查到
driver.press_keycode(24)
# 音量+
driver.press_keycode(24)
driver.press_keycode(24)
driver.press_keycode(4)
# 返回
driver.press_keycode(3)
# HOME键
driver.press_keycode(25)
# 音量-
# todo: 打开通知栏
driver.open_notifications()
# todo: 关闭运行的app
driver.close_app()
# TODO: 退出驱动,同时关闭驱动关联的app
driver.quit()
最后
以上就是不安电脑为你收集整理的Appium+python API示例(基础版)的全部内容,希望文章能够帮你解决Appium+python API示例(基础版)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复