用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.代码 二.模拟触屏 ...
随机推荐
- go new和make区别
new用于任何类型,返回的是指针,多用在对象,结构体 make类型只用于slice,map,channel,返回引用,为什么只这三个用make,因为它们都有要初始化的数据,参数golang 内置函数n ...
- vue IE9兼容flex布局 css3(转载)
原文 https://blog.csdn.net/shihezhengshz/article/details/118860562 写这文章的时候的我,心力憔悴鸭,找了好长时间,呜呜┭┮﹏┭┮ 好了,开 ...
- 通过xshell在linux上安装nginx1.12.0
0)环境安装 Nginx是C语言开发,建议在 Linux 上运行,当然,也可以安装 Windows 版本,本篇则使用 CentOS 7 作为安装环境. 0.1 gcc 安装 安装 nginx 需要先将 ...
- Java流程控制之DoWhile循环
DoWhile循环 对于while语句而言,如果不满足条件,则不能进入循环.但有时候我们需要即使不满足条件,也至少执行一次. do...while 循环和 while循环相似,不同的是,do...wh ...
- Java基础之包机制+JavaDoc
包机制 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间.[包的本质就是文件夹] 包语句的语法格式为: package pkg1[. pkg2[. pkg3...]]; 一般利用公司域名 ...
- 使用logback需要导入的jar包
jar包名 logback-access-1.1.2.jar logback-classic-1.1.2.jar logback-core-1.1.2.jar slf4j-api-1.7.25.jar ...
- 源码安装pg9.6
源码安装pg9.6 添加用户 useradd pg96 下载源码包 wget https://ftp.postgresql.org/pub/source/v9.6.24/postgresql-9.6. ...
- Asp.Net Core中dotnet 命令行语法
查看dotnet是否安装成功 dotnet -v dotnet-ef 不存在需要先安装(默认安装最新的版本) dotnet tool install -g dotnet-ef dotnet-ef 不存 ...
- Windows D3D渲染到纹理
D3D渲染到纹理 1 #include <d3dx9.h> 2 3 //---------------------------------------------------------- ...
- px 转化 为 rpx
小程序 的 px 转化为rpx 在 获取 屏幕高度 后 ,这个单位是px ,可是我的项目是用rpx,所以这里就涉及一个转化的公式了 1rpx = 750 / 设备屏幕宽度 所以 wx.getSyste ...