51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1120|回复: 0
打印 上一主题 下一主题

[转贴] Win10上搭建Appium自动化环境

[复制链接]
  • TA的每日心情
    擦汗
    昨天 09:05
  • 签到天数: 1048 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2022-4-28 10:32:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     以前都是在mac机器上搭建环境,觉得好麻烦,自己还曾今写了个脚本来一键搭建。
      现在在win10上搭建,发现开始很容易,也会有一些坑。把这些坑都记录下来,也许将来可以翻翻。
      前面已经搭建了java,android,node的环境,现在搭建appium是水到渠成了。
      先去看看最新的版本是啥。打开官网http://appium.io有点慢,耐心等待。
      安装最新版本
      用一条命令就可以安装了。
    1. cnpm install -g appium #安装最新版本
    2.   cnpm install [email]appium@1.7.2[/email] -g  #安装指定版本
    复制代码
    安装appium-doctor
      appium-doctor可以检测Appium整体依赖环境配置情况。在cmd下输入以下命令就可以安装:

    Cnpm install -g appium-doctor #检查安装情况
      安装完appium-doctor 环境之后,可以通过 appium-doctor 看到如下提示说明安装成功。
      安装Appium-Python-Client
      Appium的实用方法都在Client的源码里,对于driver和webelement实例,均有对应的元素查找方法(webelement查找的是下面的子元素),有些儿专门针对手机的函数,则需要在这个Client安装后方可使用。
      Appium为了实现自己的find查找方式,首先自定义了一个MobileBy类,给这个类对象塞入了它定义的一些扩展属性,这些属性的值会通过webdriver协议推送到server端去识别和执行,
      为了让这些属性运用到find方法中,appium很好地继承和扩展了webdriver.Remote,然后通过调用driver实例的find_element和find_elements两个核心方法实现元素查找。
      所以,既然是扩展,appiumdriver实例可以使用seleniumdriver的所有关于元素查找的实例方法。
    1.   Pip install Appium-Python-Client
    复制代码
    安装Appium-desktop
      去官网下载安装,这个东西可以用来定位元素用。装好以后就是这样的。

      准备一个模拟器,我这里用的是Genymotion, 前面文章里面已经写了秘诀,可是当我安装测试apk的时候。

    搜索了一下,看来是要装插件,然后费了好大力气,找到这个资源
      https://github.com/m9rco/Genymotion_ARM_Translation
      重启模拟器,解决问题。
      回到前面的appium desktop那里,点击启动server按钮。
      然后出现一个黑的页面,点击放大镜,就可以去inspect页面了。
      别蒙,当你不会的时候,官方文档就是最好的老师。
      去这里能找到你想要的一切
      http://appium.io/docs/en/about-appium/api/

      根据自己情况修改platformVersion(系统版本号),deviceName(设备名字),appPackage(包名),appActivity(启动页面),app(apk包在电脑的位置)
      然后启动server,发现报错:
    1.   selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command
    复制代码
     查看日志,发现问题在这里。
    1.  If you wish to use that automation instead of UiAutomator2, please add 'automationName=UiAutomator1' to your desired capabilities。
    复制代码
      所以,在添加参数的时候加上参数 automationName=UiAutomator1。结果成功解决问题。
      再启动还是报错,说启动不了app,看来不是包名,就是activity搞错了。
      获取包名:
     adb shell pm list packages -3

    如果使用adb shell dumpsys window | findstr mCurrentFocus 命令查看当前运行的包名和Activity更清晰一些。
      获取当前activity
      打开需要获取的APP,运行一下命令即可
    1.  adb shell dumpsys window | findstr mCurrentFocus
    复制代码
     获取设备信息:

     Adb devices
      Adb shell getpro

     现在启动就对了。


    就可以抓到元素了。
      简单写个demo, 这个是最简单的方式。
    1. from appium import webdriver
    2.   from time import sleep
    3.   desired_caps = {}
    4.   desired_caps['platformName'] = 'Android'
    5.   desired_caps['platformVersion'] = '8.0.0'
    6.   desired_caps['deviceName'] = '192.168.250.101:5555'
    7.   desired_caps['appPackage'] = 'com.core'
    8.   desired_caps['appActivity'] = 'com.core.ui.screens.activity.LoginActivity'
    9.   desired_caps['automationName'] = 'UiAutomator1'
    10.   desired_caps['noReset'] = 'true'
    11.   driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    12.   def log_in(username, password):
    13.       username_txt_id = "txtName"
    14.       password_txt_id = "txtPwd"
    15.       login_btn_id = "btnLogin"
    16.       username_input = driver.find_element_by_id(username_txt_id)
    17.       username_input.clear()
    18.       username_input.send_keys(username)
    19.       password_input = driver.find_element_by_id(password_txt_id)
    20.       password_input.clear()
    21.       password_input.send_keys(password)
    22.       sleep(3)
    23.       login_btn = driver.find_element_by_id(login_btn_id)
    24.       login_btn.click()
    25.   if __name__ == '__main__':
    26.       log_in('stest163394', '1')
    复制代码
    运行起来,就跑起来了。代码可以加工完善一下,做成一个框架,然后往里面填东西。
      Android的UI自动化就算是跑起来了,IOS也差不多,如果不会,去多读读官方文档,比网上搜的靠谱得多。











    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-19 04:44 , Processed in 0.069036 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表