python_appium_操作及混合应用
appium官网:
网址:http://appium.io/#
1.选择英文版的进入
初始化客户端
appium使用:
#获取现在的页面名字
print(driver.current_activity)
#获取包名
print(driver.current_package)
#获取上下文环境,原声环境和 web环境 (相当于web页面的iframe)
print(driver.current_context)
#获取所有的上下文环境
print(driver.current_contexts)
#获取源代码
print(driver.page_source)
#获取定位信息
print(driver.location)
#跳转到某个页面(package:包名,activity:事件名)
driver.start_activity(package,activity)
#后台运行 5s,一直运行:-1
driver.backgroud_app(5)
#查看app有没有安装,app:安装是包名,ios是bundle_id
driver.is_app_installed(app)
#安装app
install_app('apk')
#关闭app
close_app()
二。注意点:
#原声页面无法使用的操作
1.获取窗口
driver.current_url
2.获取url
driver.current_window_handle
三。MultiAction 组合操作(多指操作)
引入方法:
from appium.webdriver.common.multi_action import MultiAction
a
放大
缩小
四:
输入键盘操作,需要输入数字
#浏览器
EXPLORER=64
#电源键
POWER=26
#音量键
VOLUME_UP=24
VOLUME_DOWN=25
#输入数据前需要点击
queren=66
android的keycode表参考链接:
https://www.cnblogs.com/yannuo-666/p/12989920.html
1)用法:
driver.press_keycode(8)
2)简化(封装常用码表):
class Mobile_key:
ENTER = 66
HOME= 3
3)隐藏键盘
driver.hide_keyboard()
4)其他操作
driver.get_screenshot_as_file()
shake 摇一摇
lock
unlock
五.appium重要操作汇总
-元素查找
-click() 点击
-quit() start
-swipe() 坐标
-TouchAction() 单个手指操作
-MultiAction() 多手指操作
-page_source 获取源代码,用法(判断某个元素在不在源码中):"条件" in driver.page_source
六:混合应用: Hybrid APP
1)常用的跨平台开发的技术框架
Cordova Apache
React Native,RN 使用RN框架的代码在进行元素定位的时候会发现没有webview 是因为他会转换成 源码
Lonic
Flutter
Weex
Adobe Phonegap
2)元素种类,安卓组件控件
imageview ==> tagname
textview --文本控件
layout --
button --按钮控件
imageview --图标控件
checkbox --
switch --开关控件
ratingbar --评分条
seekbar --拖动条
toast -- 弹出
webview --显示网页
3)如何判断一个页面是 web
注意:需要测试web app 需要先找开发开启webview的调试模式(setWebContentsDebuggingEnabled=True)
元素的class 为webview
有x图标,不一定准确
uiautomatorviewer 等辅助工具难以定位
是否有进度条 --不一定准确
web dev 调试工具uc-tools 或者 chrome inspect 可以查看得到
chrome:chrome://inspect
uc-devtools工具:参考地址:https://www.cnblogs.com/sushi/p/12455352.html
4)测试步骤
-通过uiautomatorviewer 定位原生应用控件
-通过uc-devtools定位web页面
-appium操作到web页面
-上下文切换
注意:在进入webview但没有切换至webview里面时,不确定context名称可以使用 print(driver.contexts)来查看,其中‘NATIVE_APP’是系统原生环境,忽略。
切换至指定的webview页面(context:名称):driver.switch_to.context(context)
切换至默认的:driver.switch_to.context(None)
指定谷歌浏览器版本,一般放到连接信息里面(caps):
相对路径:chromedriverExecutableDir : r"c:\chrome_driver"
精准路径:chromedriverExecutable : r"c:\chrome_driver\webdriver.exe"
-再定位web页面
-退回原生页面,切换回原生
七:Toast
前提:
1、appium server 1.6.3 以上
2、代码中必须指定automationName为:UiAutomator2
3、UiAutomator2只支持安卓版本 5.0+
4、jdk 1.8 64位以上,配置好java_home环境变量
定位:
注意:如果使用显示等待不能使用 visiblve(tost是不可见得) 只能使用presence,对于tost弹框先用隐试等待,隐试等待没用时再用显示等待
表达方式:
xpath: //*[contains(@text,'手机号码不能为空')]
find_element_by_xpath("//android.widget.Toast")