用appium来操作模拟器
1 import time
2 from appium import webdriver
3 from selenium.webdriver.common.by import By
4 from selenium.webdriver.support.wait import WebDriverWait
5 from selenium.webdriver.support import expected_conditions as Ec
6
7 # 初始化app的配置信息
8
9 des_cap = dict() # 定义字典参数
10 des_cap["platformName"] = "android" # 表示的是android 或者IOS系统
11 des_cap["platformVersion"] = "6.0.1" # 表示的是平台系统的版本号
12 des_cap["deviceName"] = "****" # 表示的是设备的ID名称(如果只有一个设备可以用****来替代)
13 des_cap["appPackage"] = "com.android.settings" # 表示的是app的包名
14 des_cap["appActivity"] = ".Settings" # 表示的是app的界面名
15
16 driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', des_cap)
17
18 # 安装app
19 # driver.install_app(r'F:\安装包\mumu模拟器\app自动化工具集合\apk\bainianaolaitemai_115.apk')
20 # 卸载app
21 # driver.remove_app("com.em.mobile")
22
23 driver.find_element('xpath', "//*[@text='更多']").click()
24 # time.sleep(2)
25 # 显示等待,不一定要等待7秒,找到就进行
26 element= WebDriverWait(driver,7).until(Ec.presence_of_element_located((By.XPATH,"//*[@text='开启']")))
27 element.click()
28 # driver.find_element('xpath',"//*[@text='关闭']").click()
29 # driver.find_element(By.XPATH,"//*[@text='开启']").click()
30 # 这是开启跟关闭飞行模式
31
32 time.sleep(3)
33 driver.quit()
滚动操作
1 """
2 swipe滑动事件
3 driver.swipe(startx,starty,endx,endy,duration=None)
4 duration用来降低滑屏的速度及惯性,单位是ms
5 """
6 import time
7 from appium import webdriver
8 from selenium.webdriver.common.by import By
9 from selenium.webdriver.support.wait import WebDriverWait
10 from selenium.webdriver.support import expected_conditions as Ec
11
12 # 初始化app的配置信息
13
14 des_cap = dict() # 定义字典参数
15 des_cap["platformName"] = "android" # 表示的是android 或者IOS系统
16 des_cap["platformVersion"] = "6.0.1" # 表示的是平台系统的版本号
17 des_cap["deviceName"] = "****" # 表示的是设备的ID名称(如果只有一个设备可以用****来替代)
18 des_cap["appPackage"] = "com.android.settings" # 表示的是app的包名
19 des_cap["appActivity"] = ".Settings" # 表示的是app的界面名
20
21 driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', des_cap)
22
23
24 # 显示等待封装
25 # until "调用驱动程序提供的方法作为参数,直到返回值不为False"
26 def get_element(driver, element): # element 表示的元素定位的值
27 wait = WebDriverWait(driver, 10, 1)
28 element = wait.until(lambda x: x.find_element(element[0], element[1]))
29 return element
30
31
32 # 电池 按钮
33 save_btn = By.XPATH, "//*[@text='应用']"
34 save_element = get_element(driver, save_btn)
35
36 # 蓝牙 按钮
37 lanya_btn = By.XPATH, "//*[@text='蓝牙']"
38 lanya_element = get_element(driver, lanya_btn)
39
40 # save_element = WebDriverWait(driver,10,1).until(lambda x:x.find_element(By.XPATH,"//*[@text='应用']"))
41 # lanya_element = WebDriverWait(driver,10,1).until(lambda x:x.find_element(By.XPATH,"//*[@text='蓝牙']"))
42
43 # 通过scroll来进行滑动操作
44 driver.scroll(save_element, lanya_element)
45
46 time.sleep(5)
47 driver.quit()
二:简洁
1 def get_element(driver,element):
2 wait = WebDriverWait(driver,10,1)
3 element = wait.until(lambda x: x.find_element(element[0],element[1]))
4 return element
5
6
7
8
9 save_btn =By.XPATH,"//*[@text='应用']"
10 save_element =get_element(driver,save_btn)
11
12
13 lan_tn = By.XPATH,"//*[@text='蓝牙']"
14 lambda_element = get_element(driver,lan_tn)
15
16
17
18
19 driver.scroll(save_element,lambda_element)
设置滚到这里选择开发者选项,并点击第一个text是关闭的
1 import time
2 from appium import webdriver
3 from selenium.webdriver.common.by import By
4 from selenium.webdriver.support.wait import WebDriverWait
5
6 # 初始化app的配置信息
7
8 des_cap = dict() # 定义字典参数
9 des_cap["platformName"] = "android" # 表示的是android 或者IOS系统
10 des_cap["platformVersion"] = "6.0.1" # 表示的是平台系统的版本号
11 des_cap["deviceName"] = "****" # 表示的是设备的ID名称(如果只有一个设备可以用****来替代)
12 des_cap["appPackage"] = "com.android.settings" # 表示的是app的包名
13 des_cap["appActivity"] = ".Settings" # 表示的是app的界面名
14
15 driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', des_cap)
16
17
18 # 封装滑屏操作方法
19 def execute_swipe(driver, fx, count=1):
20 w = driver.get_window_size()["width"] # 获取手机屏幕的宽度
21 h = driver.get_window_size()["height"] # 获取手机屏幕的高度
22 # w=1080 h=1920
23 if fx == "top": # 往上滑
24 zb = (w / 2, h * 0.9, w / 2, h * 0.1)
25 elif fx == "down": # 往下滑
26 zb = (w / 2, h * 0.1, w / 2, h * 0.9)
27 elif fx == "left": # 往左滑
28 zb = (w * 0.9, h / 2, w * 0.1, h / 2)
29 else: # 往右滑
30 zb = (w * 0.1, h / 2, w * 0.9, h / 2)
31 for i in range(count):
32 driver.swipe(*zb, duration=1200)
33 time.sleep(1)
34
35
36 # 往上滑三次
37 execute_swipe(driver, 'top', count=3)
38
39 # 找到开发者模式
40 toast_btn = By.XPATH, "//*[contains(@text,'开发者选项')]"
41 driver.find_element(*toast_btn).click()
42 time.sleep(2)
43 # 点击弹框的关闭(其实就是定位元素)
44 t1 = By.XPATH, "//*[contains(@text,'关闭')]"
45 driver.find_element(*t1).click()
46
47 driver.quit()
用appium来操作模拟器的更多相关文章
- appium滑动操作(向上、向下、向左、向右)
appium滑动操作(向上滑动.向下滑动.向左滑动.向右滑动) 测试app:今日头条apk 测试设备:夜游神模拟器 代码如下: 先用x.y获取当前的width和height def getSize() ...
- 移动自动化测试:Android Studio 、Appium、夜神模拟器
环境是Window 10 64位 第一章:安装Appium Appium和node.js需要一起安装,他们的依赖关系暂不深究. 1. node.js傻瓜式安装 官网地址:https://nodejs. ...
- appium连接夜神模拟器方法总结
使用appium连接模拟器前提条件:appium环境已经搭建完毕,搭建步骤请参考我的博客:appium手机自动化环境搭建 1.下载并安装夜神模拟器:https://www.yeshen.com/ 2. ...
- appium+python+安卓模拟器环境搭建和启动app实例
本文主要介绍在windows环境下搭建app自动化测试环境,具体步骤如下: 1.下载安卓sdk,网上很多资源 2.下载并安装安卓模拟器,官网上有 删除bin文件下的adb.exe和nox_adb.ex ...
- Appium常用操作之「元素定位、swipe 滑屏操作」
坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:oschina.云+社区.知乎等各大平台都有. 目录 一.打开 uiautomatorviewer 二.Appium 常用操作 1.用 layui 做 ...
- 用python调试Appium和雷电模拟器连接时出现Original error: Could not find 'adb.exe' in PATH
用python调试Appium和雷电模拟器连接时出现Original error: Could not find 'adb.exe' in PATH 确定环境变量没错,用管理员启动Appium就不会出 ...
- Python爬虫入门教程 49-100 Appium安装+操作51JOB_APP(模拟手机操作之一)手机APP爬虫
爬前准备工作 在开始安装Appium之前,你要先知道Appium是做什么的?Appium 是一个自动化测试开源工具,看到没,做测试用的,它有点类似Selenium,可以自动操作APP实现一系列的操作. ...
- Appium+java --连接模拟器画面倒过来的问题
引用文章:https://blog.csdn.net/testerYu/article/details/90024049 工具 夜神模拟器 appium 现象 通过代码运行截图操作,结果全是倒着的如下 ...
- Appium连接夜神模拟器,模拟手势点击(tap)
# -*- coding:utf-8 -*- from appium import webdriver from time import sleep desired_caps ={ 'platform ...
- Appium常用操作之「微信滑屏、触屏操作」
坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:oschina.云+社区.知乎等各大平台都有. 目录 一.滑屏操作 1.访问之后,马上就滑屏可以吗? 2.连续实现 2 次滑屏 3.代码 二.模拟触屏 ...
随机推荐
- CANas分析软件,DBC文件解析,CAN报文分析,仿CANoe曲线显示
2023.01.01:增加对Kvaser的支持参考了CANoe写了下面的软件,主要用途是对报文的回放及曲线的分析. 1.CAN连接,支持周立功CAN.CANFD及PCAN 2.DBC解析与生成文件 打 ...
- Vue+element ui 笔记
1)可以直接拿过来就用的样式 https://www.cnblogs.com/xiao987334176/p/14188413.html 2)对Table里面的每一项全部设定为选中 mounted() ...
- centos7.9重启后,主机名会变为IP地址
现象: centos7.9重启后,主机名会变为IP地址 当关闭DHCP功能,则主机名修改生效,否则重启后,主机名依旧变为图示的IP地址 解决方法:经过排查,由 /etc/sysconfig/netwo ...
- taobao.tbk.sc.newuser.order.get( 淘宝客-服务商-新用户订单明细查询 )
淘宝客订单表结构设计(mysql) CREATE TABLE `tbk_order` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `member_id` bi ...
- vue- cube-scroll踩坑记
坑: 下拉刷新,上拉加载一直处于加载中 --- 原因:未结束此次下拉或上拉 ---解决:forceUpdate()结束上拉或下拉 无法正常滚动 --- 原因:数据更新了,但页面高度未变化 -- ...
- ctfshow web入门41
这个题过滤了$.+.-.^.~使得异或自增和取反构造字符都无法使用,同时甚至过滤了字母和数字. 但是特意留了个或运算符|. 由此我们可以尝试从ascii为0-255的字符中,找到用或运算能得到我们可用 ...
- fabric2.2学习笔记1
fabric2.2学习笔记1 20201303张奕博 2023年1月9日 hyperledger fabric 结构分析 每个Server作用: AdminServer:控制该节点的命运,可以删除该节 ...
- 敌兵布阵 HDU - 1166 - 单点修改,区间查询:树状数组/线段树
C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况.由于 ...
- 全新BPMN常用图形标识一览表
BPMN符号与BPMN的关系 BPMN,即业务流程建模与标记(手法),表达此类手法的即是业务流程模型示意图.业务流程示意图是由一系列的元素符号构成.作为BPMN的基础,这些符号将业务流程建模简单化.图 ...
- vue3 微信支付和支付宝支付 H5和微信内置浏览器
vue3微信支付和支付宝支付 // 判断是否为微信内置浏览器 let browser: any = navigator.userAgent.toLowerCase(); let isWechat: a ...