Genymotion模拟器的安装及脚本制作
在上一篇博文中,讲到这一篇会介绍Genymotion的安装方式。大家都知道,Genymotion是一个模拟器,或许会质疑了,直接连接真机就好了,为何还要配置模拟器?我也是用真机实践后,才选择安装的模拟器。原因是:sdk自带的uiautomatorviewer工具,不支持android8.0及以上的版本。社会在进步,移动设备更是高速发展,现在使用的手机很多都已高于这个版本。网络上有相对的解决办法,解决办法在文末给出,但我还是觉得麻烦,所以自己还是选择安装模拟器。
Genymotion配置
在下载genymotion时,需要有官网账号,才可以下载,所以可以先注册个账号,自行注册。
Genymotion下载
下载地址:https://www.genymotion.com/download/,选择对应系统下载对应的genymotion,如下图所示:

官方的genymotion操作手册,可以参考使用:https://docs.genymotion.com/latest/Content/01_Get_Started/Get_started.htm。
Genymotion安装
安装过程那就更简单了,打开下载的安装文件,一路next,直至安装成功,自动会安装Oracle VM VirtualBox,该软件是一款虚拟机,支持的平台很广泛。在genymotion中,可以使用该软件配置网络、系统等。

Genymotion添加手机系统
双击已安装好的genymotion,进入到启动页,如下:

配置SDK
SDK是上一篇博文介绍配置的,还没安装好的,可参见上一篇博文,配置如下:

SDK的地址,就是SDK的实际安装地址,建议不要包含中文路径。
配置好了SDK后,就可以下载各种型号的手机系统了,如下所示,新版的genymotion页面,比老版本好看多了

安装手机系统并启用
如何安装手机系统?选择自己需要的手机型号,点击右侧按钮处,点击install即可,如下:

静候,等待下载完,下载速度,看大家的网速了,大小也就一两百兆左右。
下载完成之后,如何使用?点击右侧的start按钮即可,如下:

start相当于就是我们日常使用手机的时候,开机操作,系统启动成功之后,出现如下界面:

说明genymotion模拟器就安装好了,简单几步操作,安装还是很简单的。
查看连接设备
在查看设备之前,需要启用开发者模式,相当于,我们真机在传输数据时,也是需要开启开发者模式,并通过usb数据线连接电脑,完成数据的传输,是一个道理。
模拟器如何开启开发者模式?一看图就明白,如下图所示:

进入到关于手机页面,连续点击版本号七次,即可开启开发者模式,记住,一定是七次,不能少。
开启了开发者模式之后,USB调试也需要开启,跟真机操作一样的,如下图:

手机已经处于开发者模式,并允许调试了,那如何查看设备连接是否正常了?这就需要引用adb命令了,adb命令在安装sdk的时候,就会自动安装。今天不深入分享adb命令的使用,只做简单介绍。查看设备连接的命令是:
adb devices
输入该命令后,出现如下图所示,则说明有设备连接的

到这,genymotion模拟器就配置成功了,是不是非常的简单。
脚本制作
app安装
针对自家产品开发脚本,那自然是需要在模拟器中安装一个自家的app的,那如何安装呢,小小一个命令即可完成,命令如下:
adb install C:\Users\leo\Desktop\k.apk
adb依然是之前所提到的adb命令;install顾名思义,安装的意思;后面的路径则是apk包存放的位置。执行上述命令后,出现如下图所示,则说明app安装成功:

app卸载
刚描述了app的安装,那卸载又是如何操作呢?有些朋友可能会想到命令adb uninstall C:\Users\leo\Desktop\k.apk么?命令是这个,但却不是接路径了,需要对应app的包名。
包名如何获取,在模拟器中打开你将要卸载的app,输入命令:
adb shell dumpsys window w |findstr \/ |findstr name=
即可获得对应app的包名了,卸载app的命令则是:
adb uninstall com.XXX.XXX
执行该命令后,模拟器中对应的app则会被卸载。
元素定位
元素定位,跟UI自动化的定位差不多,也无非就是id、name、xpath那些,主要是看自己如何使用,能够简单却又准确无误的定位到元素。
元素定位,我们借助sdk中自带的工具:uiautomatorviewer.bat,工具路径在:D:\android-sdk-windows\tools文件夹下,具体路径看个人安装sdk的路径,我只是个举例。
先在模拟器中打开对应的app,再打开uiautomatorviewer.bat工具,在工具中则会看到app对应的界面,如下所示:

从上图可看出,左侧面板就是app对应的界面,右侧则是元素的层级显示,鼠标点击对应的元素,右侧就会展示对应的详情路径,便可实现元素的定位。该工具类似于火狐浏览器中的firebug工具一样,是便于进行元素提取,进行元素定位的。
代码示例
写到这,我已按耐不住的想上一段自己曾几何时的一段线性代码,很普通的一段线性代码。实现一个简单的登录操作,如下:
没有断言,没有特殊逻辑,不喜勿喷,基于python刚入门写的。做为新入门的朋友来说,可以参考一下,如果没有参考价值,那忽略即可。
import selenium
import time
from appium import webdriver desired_caps = {
'platformName': 'Android',
'platformVersion': '4.4.4',
'deviceName': 'S5',
'appPackage': '', #包名
'appActivity': '', #app入口
'udid': '192.168.66.101:5555', # genymotion设备
'noReset': 'true',
'unicodeKeyboard': 'True',
'resetKeyboard': 'True',
}
print('selenium version = ', selenium.__version__) driver = webdriver.Remote('http://192.168.1.103:4723/wd/hub', desired_caps)
print("服务启动成功")
time.sleep(3) account = driver.find_element_by_id('id/rel_content')
account.find_element_by_id('id/edit_acount')
driver.press_keycode(61)
print("换行操作") if driver.find_element_by_id('id/img_clear_acount'):
clr_account = driver.find_element_by_id('id/img_clear_acount').click()
print("账号清除成功") account.send_keys('')
print("账号输入完毕")
time.sleep(2) driver.press_keycode(61)
print("换行操作") password = driver.find_element_by_id('id/rel_content')
password.find_element_by_id('id/edit_pass')
password.send_keys('')
print("密码输入完毕")
driver.find_element_by_xpath('//android.widget.TextView[@text="登 录"]').click()
print("点击登录按钮") print('登录成功')
time.sleep(5)
driver.quit()
代码写到这,想要运行,还需要基于appium的配合,才能够运行起来。上述代码及appium的操作,下篇博文将继续分享。
问题总结
在博文一开始时,就讲到遇到的一个问题,现在来说下解决方式。
在使用真机连接,进行元素定位时,出现如下报错:unexpected error while obtaining UI hierarchy

询问度娘发现,该问题原因是:android 8.0导致的问题,需要更新 uiautomatorviewer 源码才能解决。个人还不会更新源码,所以继续度娘,发现了一个解决办法,如下:
运行uiautomatorviewer.bat,导入文件,如下所示:

使用如上步骤,即可实现元素定位了,之前我说过,我不太喜欢用这种方式,是因为,每切换一个页面,则需要重复上述步骤,觉得麻烦,所以就借助模拟器来进行元素定位了,这只是我个人喜好罢了。命令一行一行的执行,很繁琐,不过可以写个bat文件脚本,一键执行即可。
希望对有需要的朋友有所帮助,文中有描述不对的地方,欢迎批评指正。
Genymotion模拟器的安装及脚本制作的更多相关文章
- Genymotion模拟器的安装及常见问题解决方法
Genymotion是很好用很快的一款Android模拟器. 我们使用的时候下载一个免费版的就足够用了. 官网下载地址:http://www.genymotion.net/ 不过这个软件下载之前必须注 ...
- linux 下 genymotion 模拟器不能安装app
提示: "应用未安装" 解决方法: 下载: Genymotion-ARM-Translation_v1.1.zip 进入genymotion 的tools用adb传进去: ./ad ...
- genymotion 模拟器内安装软件 the app contains ARM native code and your devices cannot run ARM instructions
问题如图: 解决方法: 下载一个Genymotion-ARM-Translation软件,安装到模拟器中就好了
- Genymotion上不能安装APK软件的问题
Genymotion模拟器不能安装APK的原因 官网给出的解释:Genymotion模拟器使用的是x86架构,在第三方市场上的应用有部分不采用x86这么一种架构,所以在编译的时候不通过,报“APP n ...
- 『与善仁』Appium基础 — 2、常用Android模拟器的安装
目录 1.Android Virtual Devices模拟器 2.Genymotion模拟器 (1)Genymotion模拟器下载 (2)模拟器Genymotion安装 (3)Genymotion模 ...
- Genymotion模拟器安装ARM架构编译应用失败解决方案
我们在安装一些应用到Genymotion模拟器会提示:adb: failed to install xx.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: ...
- Android之genymotion模拟器安装于配置
今天是双休日,可怜没人陪,只好一个人玩电脑了,之前别人一直给我推荐genymotion模拟器,说各种方便,秒杀Android自带模拟器,所以就趁这个周末搞了一下,总体感觉还挺不错的,确实比Androi ...
- Android Studio插件安装及使用Genymotion模拟器
Android Studio自带的模拟器速度已经比Eclipse插件的快一点了,但是还不够暴力,不够爽.现在来说说最暴力的Genymotion模拟器如何结合AS 使用.首先上Genymotion官网下 ...
- 第一次使用Android Studio时你应该知道的一切配置(二):新建一个属于自己的工程并安装Genymotion模拟器
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
随机推荐
- netty源码解解析(4.0)-18 ChannelHandler: codec--编解码框架
编解码框架和一些常用的实现位于io.netty.handler.codec包中. 编解码框架包含两部分:Byte流和特定类型数据之间的编解码,也叫序列化和反序列化.不类型数据之间的转换. 下图是编解码 ...
- 多线程与高并发(五) Lock
之前学习了如何使用synchronized关键字来实现同步访问,Java SE 5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁功能,它提供了与synchronized关键字类似的同步功 ...
- python paramiko外部传参和内部调用命令的方法
学习了很久的python,但在工作中使用的时候,却发现不知道怎么传参进入到python中执行,所以这两天就研究 了python args怎么将外部参数传入到python中执行 1.首先使用python ...
- Shrio使用Jwt达到前后端分离
概述 前后端分离之后,因为HTTP本身是无状态的,Session就没法用了.项目采用jwt的方案后,请求的主要流程如下:用户登录成功之后,服务端会创建一个jwt的token(jwt的这个token中记 ...
- Redis|Sentinel 高可用架构
一 前言 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端 ...
- SQL奇技淫巧(01):给查出的数据排序编个号【row_number() over(order by c)】(mysql,db2,oracle,sqlserver通用)
我们天天都在跟数据库打交道,写下的代码不计其数,写下的SQL更是可以绕地球几圈.这里收集关于SQL的神奇语法及用法,虽然你可能没有用过,但这些SQL却可以在关键的时候,派上用场. 我对SQL语句的理解 ...
- Leetcode之深度优先搜索(DFS)专题-690. 员工的重要性(Employee Importance)
Leetcode之深度优先搜索(DFS)专题-690. 员工的重要性(Employee Importance) 深度优先搜索的解题详细介绍,点击 给定一个保存员工信息的数据结构,它包含了员工唯一的id ...
- 【故障公告】阿里云 RDS 数据库服务器 CPU 100% 造成全站故障
非常非常抱歉,今晚 19:34 ~ 21:16 园子所使用的阿里云 RDS 数据库服务器突然出现 CPU 100% 问题,造成全站无法正常访问,由此您带来了很大的麻烦,请您谅解. 故障经过是这样的.1 ...
- 从Linux服务器下载上传文件
首先要确定好哪两种的连接:Linux常用的有centors和unbantu两种版本,PC端Mac和Windows 如果在两个Linux之间传输,或Linux和Mac之间传输可以使用scp命令,类似于s ...
- Keras(三)backend 兼容 Regressor 回归 Classifier 分类 原理及实例
backend 兼容 backend,即基于什么来做运算 Keras 可以基于两个Backend,一个是 Theano,一个是 Tensorflow 查看当前backend import keras ...