在上一篇博文中,讲到这一篇会介绍Genymotion的安装方式。你们都知道,Genymotion是一个模拟器,或许会质疑了,直接链接真机就行了,为什么还要配置模拟器?我也是用真机实践后,才选择安装的模拟器。缘由是:sdk自带的uiautomatorviewer工具,不支持android8.0及以上的版本。社会在进步,移动设备更是高速发展,如今使用的手机不少都已高于这个版本。网络上有相对的解决办法,解决办法在文末给出,但我仍是以为麻烦,因此本身仍是选择安装模拟器。python
在下载genymotion时,须要有官网帐号,才能够下载,因此能够先注册个帐号,自行注册。android
下载地址:https://www.genymotion.com/download/,选择对应系统下载对应的genymotion,以下图所示:web
官方的genymotion操做手册,能够参考使用:https://docs.genymotion.com/latest/Content/01_Get_Started/Get_started.htm。shell
安装过程那就更简单了,打开下载的安装文件,一路next,直至安装成功,自动会安装Oracle VM VirtualBox,该软件是一款虚拟机,支持的平台很普遍。在genymotion中,可使用该软件配置网络、系统等。windows
双击已安装好的genymotion,进入到启动页,以下:浏览器
SDK是上一篇博文介绍配置的,还没安装好的,可参见上一篇博文,配置以下:网络
SDK的地址,就是SDK的实际安装地址,建议不要包含中文路径。app
配置好了SDK后,就能够下载各类型号的手机系统了,以下所示,新版的genymotion页面,比老版本好看多了工具
如何安装手机系统?选择本身须要的手机型号,点击右侧按钮处,点击install便可,以下:ui
静候,等待下载完,下载速度,看你们的网速了,大小也就一两百兆左右。
下载完成以后,如何使用?点击右侧的start按钮便可,以下:
start至关于就是咱们平常使用手机的时候,开机操做,系统启动成功以后,出现以下界面:
说明genymotion模拟器就安装好了,简单几步操做,安装仍是很简单的。
在查看设备以前,须要启用开发者模式,至关于,咱们真机在传输数据时,也是须要开启开发者模式,并经过usb数据线链接电脑,完成数据的传输,是一个道理。
模拟器如何开启开发者模式?一看图就明白,以下图所示:
进入到关于手机页面,连续点击版本号七次,便可开启开发者模式,记住,必定是七次,不能少。
开启了开发者模式以后,USB调试也须要开启,跟真机操做同样的,以下图:
手机已经处于开发者模式,并容许调试了,那如何查看设备链接是否正常了?这就须要引用adb命令了,adb命令在安装sdk的时候,就会自动安装。今天不深刻分享adb命令的使用,只作简单介绍。查看设备链接的命令是:
adb devices
输入该命令后,出现以下图所示,则说明有设备链接的
到这,genymotion模拟器就配置成功了,是否是很是的简单。
针对自家产品开发脚本,那天然是须要在模拟器中安装一个自家的app的,那如何安装呢,小小一个命令便可完成,命令以下:
adb install C:\Users\leo\Desktop\k.apk
adb依然是以前所提到的adb命令;install顾名思义,安装的意思;后面的路径则是apk包存放的位置。执行上述命令后,出现以下图所示,则说明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('10086') 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('123456') 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文件脚本,一键执行便可。
但愿对有须要的朋友有所帮助,文中有描述不对的地方,欢迎批评指正。
本文仅表明做者观点,系做者@温一壶清酒发表。
欢迎转载,但未经做者赞成必须保留此段声明,且在文章页面明显位置给出原文链接,不然保留追究法律责任的权利。
文章出处:http://www.cnblogs.com/hong-fithing/