Appium常用操作及H5页面元素定位
目录
- 1.去登录考研帮系统
- 2.高级手势操作
- 1.tap()
- 2.移动 move_to
- 3.滑屏操作
- 3.多点触控 multiAction
- 4.原生嵌套H5
1.去登录考研帮系统
import time
from time import sleepfrom appium import webdriver
# 用python代码去做app自动化 先要获取 app程序的手机信息
# 手机配置信息 我们统一写在info中
info = {#操作平台'platformName':'Android',#版本号'platformVersion':'7.1.2',#设备信息 可自由编写 不能为空 不能为中文'deviceName':'127.0.0.1:62001',# 包名'appPackage':'com.tal.kaoyan',#界面名/入口名#界面名 在这里要注意填写的界面名并不是app打开的第一页的字符码#当前包名和界面名获取的方式:cmd - adb shell dumpsys window | findstr mCurrentFocus# 获取入口名# 1.有apk的情况下获取包名和入口名 cmd - aapt dump badging 文件拖拽# 2.apk的包不见了,又想获取入口名,那我们可以通过monkey命令来获取# 1. adb shell pm list packages -3# 2. adb shell monkey -p 包名 -v-v-v 1# 其中onent的后面就是入口名 末尾的end不要带#有apk的'appActivity':'com.tal.kaoyan.ui.activity.SplashActivity',#重置'noReset':False
}# 手机配置信息写好后,我们就可以启动手机程序 使用webdriver
# Remote必填IP+端口 手机配置信息
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',info)
driver.implicitly_wait(3)# 启动后展示3秒# 点击取消
driver.find_element('id','android:id/button2').click()
# 点击跳过
# driver.find_element('id','com.tal.kaoyan:id/tv_skip').click()# 通过固定元素定位操作遇到多种机型可能出现定位越界 可以通过先获取手机屏幕大小/宽高 按百分比去设置
# 怎么获取 通过selenium webdriver常用函数
x = driver.get_window_size()['width']
y = driver.get_window_size()['height']
print('手机宽度{},手机高度{}'.format(x,y))
time.sleep(1)
driver.swipe(x*0.9,y*0.8,x*0.1,y*0.8,1000)
time.sleep(1)
driver.swipe(x*0.9,y*0.8,x*0.1,y*0.8,1000)
time.sleep(1)
# 通过滑动登录 swipe(开始x,开始y,结束x,结束y,持续时间y/n ms)
# driver.swipe(939,914,174,914,1000)
# time.sleep(1)
# driver.swipe(939,914,174,914,1000)
# time.sleep(1)
# 点击立即体验
driver.find_element('id','com.tal.kaoyan:id/activity_splash_guidfinish').click()# 输入用户名
driver.find_element('id','com.tal.kaoyan:id/login_email_edittext').send_keys('qwerty2664')
# 输入密码
driver.find_element('id','com.tal.kaoyan:id/login_password_edittext').send_keys('qwerty123')
# 点击登录
driver.find_element('id','com.tal.kaoyan:id/login_login_btn').click()time.sleep(3)
driver.quit()
2.高级手势操作
"""
高级手势 TouchAction 滑动长按 拖动 主要解决如滑屏解锁
使用的步骤
1.有基本手势组成,所以我们就要组合创建touchAction对象
2.通过对象去调用操作
3.执行一定要perform
"""import time
from time import sleepfrom appium import webdriver
# 用python代码去做app自动化 先要获取 app程序的手机信息
# 手机配置信息 我们统一写在info中
from appium.webdriver.common.touch_action import TouchActioninfo = {#操作平台'platformName':'Android',#版本号'platformVersion':'7.1.2',#设备信息 可自由编写 不能为空 不能为中文'deviceName':'127.0.0.1:62001',# 包名'appPackage':'com.android.settings',#界面名/入口名#界面名 在这里要注意填写的界面名并不是app打开的第一页的字符码#当前包名和界面名获取的方式:cmd - adb shell dumpsys window | findstr mCurrentFoucus# 获取入口名# 1.有apk的情况下获取包名和入口名 cmd - aapt dump badging 文件拖拽# 2.apk的包不见了,又想获取入口名,那我们可以通过monkey命令来获取# 1. adb shell pm list packages -3# 2. adb shell monkey -p 包名 -v-v-v 1# 其中onent的后面就是入口名 末尾的end不要带#有apk的'appActivity':'com.android.settings.ChooseLockPattern',#重置'noReset':False
}# 去登录考研帮系统
# 手机配置信息写好后,我们就可以启动手机程序 使用webdriver
# Remote必填IP+端口 手机配置信息
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',info)
driver.implicitly_wait(3)
1.tap()
# wlan = driver.find_element('xpath','//*[@text="WLAN"]')
# 通过TouchAction操作是需要导包
# action1 = TouchAction(driver)
# action1.tap(wlan)
# action1.perform()
2.移动 move_to
# TouchAction(driver).press(x=550,y=1790).wait(1000).move_to(x=470,y=602).release().perform()
3.滑屏操作
# press ()长按 release()抬起 wait(ms) perform()执行
TouchAction(driver).press(x=857.2,y=898.5).wait(1000).move_to(x=540.5,y=1229.4).wait(1000).move_to(x=211.8,y=1599.1).wait(1000).release().perform()time.sleep(3)
driver.quit()
3.多点触控 multiAction
# 多点触控就是touchAction的补充版 支持多个手指操作 针对业务背景: 百度地图放大缩小
# 创建两个手指
import time
from time import sleepfrom appium import webdriver
# 用python代码去做app自动化 先要获取 app程序的手机信息
# 手机配置信息 我们统一写在info中
from appium.webdriver.common.multi_action import MultiAction
from appium.webdriver.common.touch_action import TouchActioninfo = {#操作平台'platformName':'Android',#版本号'platformVersion':'7.1.2',#设备信息 可自由编写 不能为空 不能为中文'deviceName':'127.0.0.1:62001',# 包名'appPackage':'com.baidu.BaiduMap',#界面名/入口名#界面名 在这里要注意填写的界面名并不是app打开的第一页的字符码#当前包名和界面名获取的方式:cmd - adb shell dumpsys window | findstr mCurrentFoucus# 获取入口名# 1.有apk的情况下获取包名和入口名 cmd - aapt dump badging 文件拖拽# 2.apk的包不见了,又想获取入口名,那我们可以通过monkey命令来获取# 1. adb shell pm list packages -3# 2. adb shell monkey -p 包名 -v-v-v 1# 其中onent的后面就是入口名 末尾的end不要带#有apk的'appActivity':'com.baidu.baidumaps.MapsActivity',#重置'noReset':True
}# 去登录考研帮系统
# 手机配置信息写好后,我们就可以启动手机程序 使用webdriver
# Remote必填IP+端口 手机配置信息
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',info)
driver.implicitly_wait(3)action1 = TouchAction(driver)
action1.press(x=552.5,y=446.7).wait(1000).move_to(x=851.2,y=1183.4).wait(1000).release()
action2 = TouchAction(driver)
action2.press(x=337.7,y=1033.5).wait(1000).move_to(x=835.2,y=1114.4).wait(1000).release()# 创建 执行对象
zoom = MultiAction(driver)
zoom.add(action1,action2)
zoom.perform()time.sleep(3)
driver.quit()
4.原生嵌套H5
import time
from time import sleepfrom appium import webdriver
# 用python代码去做app自动化 先要获取 app程序的手机信息
# 手机配置信息 我们统一写在info中
from appium.webdriver.common.multi_action import MultiAction
from appium.webdriver.common.touch_action import TouchActioninfo = {#操作平台'platformName':'Android',#版本号'platformVersion':'7.1.2',#设备信息 可自由编写 不能为空 不能为中文'deviceName':'127.0.0.1:62001',# 包名'appPackage':'com.wondershare.drfone',#界面名/入口名#界面名 在这里要注意填写的界面名并不是app打开的第一页的字符码#当前包名和界面名获取的方式:cmd - adb shell dumpsys window | findstr mCurrentFoucus# 获取入口名# 1.有apk的情况下获取包名和入口名 cmd - aapt dump badging 文件拖拽# 2.apk的包不见了,又想获取入口名,那我们可以通过monkey命令来获取# 1. adb shell pm list packages -3# 2. adb shell monkey -p 包名 -v-v-v 1# 其中onent的后面就是入口名 末尾的end不要带#有apk的'appActivity':'.ui.activity.WelcomeActivity',#重置'noReset':True
}# 去登录考研帮系统
# 手机配置信息写好后,我们就可以启动手机程序 使用webdriver
# Remote必填IP+端口 手机配置信息
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',info)
driver.implicitly_wait(3)# adb shell monkey -p com.wondershare.drfone -v-v-v 1
driver.find_element('id','com.wondershare.drfone:id/btnBackup').click()
time.sleep(12)
driver.find_element('id','com.wondershare.drfone:id/btnRecoverData').click()
time.sleep(5)
# 原生切换到h5页面 通过句柄切换窗口
#contexts 上下
context = driver.contexts
print(context)time.sleep(3)
driver.switch_to.context('嵌套句柄值填写到这即可')
print('我切换到H5了')# 利用chrome://inspect
driver.find_element('id','xxxx').send_keys('123')#跳回原生界面
driver.switch_to.context('原生句柄值')
print('我又跳回来了')
time.sleep(3)
driver.quit()
Appium常用操作及H5页面元素定位相关推荐
- Appium 自动化测试 H5页面元素定位
简介 在现在的移动端App中,由于开发效率.需求频繁变更的需求情况下,经常有相关的运营需求,经常要进行更新,如果全部采用原生开发,需要的成本比较高,后来就出现了内嵌的H5页面.那么这些H5页面元素 ...
- APP UI 自动化测试 H5页面元素定位
使用 uc-devtools 代替 uiautomatorviewer 查找定位H5元素 由于uiautomatorviewer 只能定位APP原生页面: 所以要定位app H5 页面内的元素 使用 ...
- MuMu模拟器+Edge浏览器:Android原生APP嵌入的H5页面元素定位
前提条件: 1.已安装MuMu模拟器 2.已配置adb环境 adb链接MuMu模拟器 C:\Users\shenyf>adb connect 127.0.0.1:7555 connected t ...
- h5页面元素聚焦手机无法弹出键盘
移动端h5做手机app的直播视频碰到的问题 h5页面元素聚焦手机无法弹出键盘 问题是这样产生的: 公司最近要搞一个直播的h5活动页内嵌到app上,当然我就来负责这个了. 但是这个项目我是半道接手的,原 ...
- cypress之实现文件上传下载以及操作iframe下页面元素
前面讲解了使用cypress框架如何定位.操作页面元素以及校验测试结果,此次课程将介绍如何实现文件上传.操作iframe下面的页面原因以及操作shadow dom下的页面元素.为了完成此次课程目标,拆 ...
- selenium课程笔记3-使用selenium中的webdriver对浏览器操作-页面元素定位及操作
1.打开浏览器,打开网页 1 from selenium import webdriver 2 dr=webdriver.Chrome() 3 dr.get('http://www.baidu.com ...
- appium(2)简单的demo、元素定位
目录 appium-录制用例 获取包名和activity 录制步骤 (1)启动appium客户端,默认启动地址 http://127.0.0.1:4723/wd/hub (2)file>New ...
- java 获取页面元素的位置_Selenium Java 页面元素定位2
一.操作目的 1.1 自动化测试常用操作 1.定位网页上的元素,并存储到一个变量中: 2.对变量进行操作,比如点击或输入文字: 3.设定页面元素的操作值: 二.定位方法汇总 2.1 findEleme ...
- 利用python生成微信h5_Python + Appium 微信公众号 H5 页面自动化测试
本文内容在以下环境运行成功: Windows10 Python2.7 android-sdk_r24.4.1 Appium-windows-1.15.1 chromedriver_2.40 小米手机 ...
最新文章
- 找论文太难?试试这款「文本生成」论文搜索工具
- Minimum Path Sum,最短路径问题,动态规划
- Flash学习笔记(01)
- WordPress主题:Zibll子比主题 V4.0 绿色版
- IntelliJ IDEA 14 创建maven项目二
- android listview 移动到顶部,android listview滚动到顶部
- 当你感到迷茫焦虑时,请听听白岩松这个演讲
- Android电视远程桌面,【当贝市场】教你使用小米电视远程控制Windows桌面
- DB2 SQL执行计划
- 做PPT使用的矢量图标网站
- 英威腾GD200A系列变频器实现多段速控制的相关参数设置及接线
- 数据库分页LIMIT
- Linux——eth0,eth1,eth2,lo及ifconfig命令
- 非洲Affrike单词
- excel基于一列的值统计另一列数值的个数
- 有点先生和差不多女士
- 官方Nexus软件下载教程
- U盘写保护,终极解决办法,
- Convolutional Two-Stream Network Fusion for Video Action Recognition翻译
- python wms系统源码_java开发的wms仓库管理系统源码(PC+Android)