当前位置:网站首页>Appium常用操作及H5页面元素定位
Appium常用操作及H5页面元素定位
2022-08-09 02:07:00 【司小幽】
1.去登录考研帮系统
import time
from time import sleep
from 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 sleep
from appium import webdriver
# 用python代码去做app自动化 先要获取 app程序的手机信息
# 手机配置信息 我们统一写在info中
from appium.webdriver.common.touch_action import TouchAction
info = {
#操作平台
'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 sleep
from appium import webdriver
# 用python代码去做app自动化 先要获取 app程序的手机信息
# 手机配置信息 我们统一写在info中
from appium.webdriver.common.multi_action import MultiAction
from appium.webdriver.common.touch_action import TouchAction
info = {
#操作平台
'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 sleep
from appium import webdriver
# 用python代码去做app自动化 先要获取 app程序的手机信息
# 手机配置信息 我们统一写在info中
from appium.webdriver.common.multi_action import MultiAction
from appium.webdriver.common.touch_action import TouchAction
info = {
#操作平台
'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()
边栏推荐
猜你喜欢
typescript90-使用类型文件声明类型
MT4/MQL4 entry to proficient foreign exchange EA tutorial Lesson 1 Getting to know MetaEditor
mysql连接超过八小时报错
帮助安全红队取得成功的11条建议
Etcd realize large-scale application service management of actual combat
力扣刷题记录5.1-----59. 螺旋矩阵 II
33. 分别谈谈联合索引生效和失效的条件
解决有路由策略的情况下域内NAT不通的问题
边缘计算的三个关键好处
Educational Codeforces Round 132 (Rated for Div. 2)
随机推荐
[C language brush questions] Application of fast and slow pointers in linked lists
Go-11 - Process Control
增额终身寿险哪家最好呢?真的安全吗?
Composer usage record
mysql连接超过八小时报错
边缘计算的三个关键好处
KQL和Lucene的区别
2020.12.4 log
2022/8/8 Competition thinking + state pressure dp
企业面临的五大数据安全挑战
线段树知识整理
D. Tournament Countdown
Use of torchversion.transforms
composer的使用记录
final
Grid布局介绍
10.1-----19. Delete the Nth node from the bottom of the linked list
How js implements array deduplication (7 kinds)
NPDP改版前最后一次考试!请注意
Go-12-结构体