Appium环境搭建及项目实战

发表于:2019-11-12 11:49

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:上海小盖伦    来源:博客园

#
Appium
  手机端自动化环境搭建比其他自动化环境搭建较为复杂,安装工具有点多,也会有很多坑,安装工具一定注意版本号对应问题。
  一、我的电脑环境:win7  64位,安卓测试机4.4.2版本,Python3.6,appium1.4,java1.7
  二、环境安装:
  java环境安装安装就不讲了
  (1)安装appium,地址:  https://bitbucket.org/appium/appium.app/downloads/
  解压后一步步安装,桌面会有appium的快捷方式
  appium安装好后,找到这个文件目录D:\andriod\anzhaung\appiumZIP\Appium\node_modules\.bin(这是我的安装目录)
  将上面的地址添加到环境变量path下
  打开cmd,输入appium-doctor,检查环境是否OK,出现如下图所示,说明环境OK
  (2)   安装Android SDK,地址: http://dl.google.com/android/installer_r23.0.2-windows.exe
  安装完成后添加环境变量,在系统变量新建:ANDROID_HOME,对应变量值为:D:\android(sdk安装路径)
  在系统变量找到path编辑,添加下面俩个变量: ;%ANDROID_HOME%\platform-tools;ANDROID_HOME%\tools;
  (3)双击启动SDK Manager.exe 程序,打开tool,再打开options,出现下面界面,标记的都要填上,这样就会自动更新
  点击close之后,按照下图操作:
  (4)Appium是用.net开发的,所以需要安装.net framework4.5,下载地址:  https://www.microsoft.com/zhcn/download/details.aspx?id=3065332
  (5)安装Appium-Python-Client
  安装Python时,我已经装好pip了,需要pip安装包的找我要,打开cmd命令,输入:
  pip install Appium-Python-Client
  前面四步骤已经把环境搭建好了,第6步是方便以后写脚本获取apk包名和launcherActivity
  (6)在sdk安装目录下,找aapt通工具的路径:D:\andriod\build-tools\19.1.0\aapt.exe,将其添加到环境变量,打开cmd,输入aapt,出现下图则正确
  三、实战:自动打开手机谷歌浏览器,并在搜索框输入商品的链接地址,进行搜索
  准备工作:1、4.4安卓真机,此机下载谷歌浏览器(会自动选择对应的版本,我这里安装时自动给我安装了58版本的)
  2、webdriver驱动安装,58版本的浏览器对应的驱动是v2.29(需要驱动的找我要),下载好驱动放在appium安装目录的以下路径文件夹下面:D:\andriod\anzhaung\appiumZIP\Appium\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win(这是我的安装目录)
  3、在pc端下载谷歌浏览器的apk(我存放的位置:D:\apk\Chrome_320208401.apk)
  4、打开appium,点击左上角机器人,配置如下图
  5、(1)在pc端谷歌浏览器输入:chrome://inspect,这是打开远程调试工具,如果你的手机与电脑是连接正常的,会显示你的手机名称,这时点击inpect,电脑上也会出现与你手机相同的界面,如果出现空白的页面,你就现需要翻墙了(我翻墙的)
  (2)在Android  SDK安装目录下找到D:\andriod\tools\uiautomatorviewer.bat,双击打开,这个也是定位元素用的
  说明:1和2这俩个工具都是用来定位元素的,1工具和selenium中定位一模一样,但是它无法定位到浏览器弹出的提示或其他(我在登陆的时候,浏览器弹出询问我是否记住密码,1工具就无法定位,我用2工具就可以定位到,才可以继续下一步操作),我是俩者结合使用,因为之前做selenium的,所以大部分都是用1工具去定位,定位不到的才去用2工具,而2工具也有缺点,它无法定位到webview界面里面的内容,1工具可以,所以还是结合使用吧
  开始编写脚本,直接看代码:
    from appium import webdriver
  import time
  desired_caps = {}
  desired_caps['platformName'] = 'Android'                           这里是android的apk
  #desired_caps['platformVersion'] = '5.0'
  desired_caps['deviceName'] = 'NXTDU16814008569'            这是手机设备的名称,通过adb devices命令查看,也可通过该方法判断手机与电脑是否正常连接上
  #desired_caps['appPackage'] = 'com.android.chrome '
  #desired_caps['browserName'] = 'Chrome'
  # desired_caps['unicodeKeyboard']= True
  # desired_caps['resetKeyboard']=True
  #整个业务流程我循环俩千次,因为公司需要大量数据以图表形式展现给客户,如果人工去点点点,。。。。。。。。。。
  for m in range(1,2000):
  driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
  time.sleep(5)
  driver.get('http://shopmprt2q.wemartx.com/product?id=G00EKFFNHC')
  time.sleep(3)
  #点击加入购物车
  driver.find_element_by_xpath('//*[@id="wmContainer"]/div[3]/div/div[1]/button/div/span').click()
  time.sleep(3)
  #点击购物车
  driver.find_element_by_xpath('//*[@id="wmContainer"]/div[1]/div/div[1]/div[1]/ul/li[2]/a').click()
  time.sleep(3)
  a=driver.find_elements_by_class_name('wm-button-text')
  for i in a:
  if i.text=='去结算':
  i.click()
  break
  #点击个人中心进行登录
  # driver.find_element_by_xpath('//*[@id="wmContainer"]/ul/li[1]/div/div[1]/div[1]/ul/li[1]/a/i').click()
  # time.sleep(3)
  driver.find_element_by_id('js-ws-mobile-no').send_keys('*******')
  driver.find_element_by_id('js-ws-password').send_keys('********')
  b=driver.find_elements_by_class_name('wm-button-container')
  for i in b:
  if i.text=='登录':
  i.click()
  break
  time.sleep(3)
  cont=driver.contexts
  #切换到native_app
  driver.switch_to.context(cont[0])
  time.sleep(3)
  #点击浏览器弹出的提示
  driver.find_element_by_id('com.android.chrome:id/button_primary').click()
  #切回到webview
  driver.switch_to.context(cont[1])
  time.sleep(3)
  #点击个人中心
  driver.find_element_by_xpath('//*[@id="wmContainer"]/div/div[1]/div[1]/div[1]/ul/li[1]/a/i').click()
  time.sleep(3)
  #点击待付款
  driver.find_element_by_xpath('//*[@id="wmContainer"]/div[2]/div/div[2]/div[2]/div[1]').click()
  time.sleep(5)
  #点击立即支付
  driver.find_element_by_xpath('//*[@id="wmContainer"]/div[2]/div/div[1]/div/div[3]/div[2]/button[1]').click()
  运行上面红色部分的代码此时就可以在手机上看到自动操作,并自动在谷歌浏览器输入地址啦!注释的部分是之前没在appium工具上配置写的,这些注释的可以不要。
  在摸索的过程中,你会发现网上有很多关于参数配置,什么appPackage,appActivity,因为我直接在appium工具里配置了,这里不需要写了,如果要在代码中配置,这俩个参数在哪查看呢?打开cmd命令,输入:aapt dump badging D:\apk\Chrome_320208401.apk,就会看到下图,
  acticity参数名正常情况下,上图你往下翻找到launch-activity,后面就是该名了,因为我做的这个谷歌apk我没找到,所以我放弃从代码中配置,直接从appium工具里去配置,它会自动填写这些

       本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号