• 基于facebook-wda的iOS自动化操作实践记录


    [本文出自天外归云的博客园]

    原理

    对于iOS自动化操作,主要靠WebDriverAgent来完成。在Mac电脑上连接真机iPhone,运行WebDriverAgentRunner会在Mac端启动WDA服务器,并在手机iPhone端安装一个WebDriverAgentRunner应用。我们通过编写脚本来与WDA服务器通信,告诉WDA服务器我们想要如何操作iPhone手机,WDA服务器与安装在手机iPhone端的WebDriverAgentRunner应用通信并通过该app发送模拟指令来实现操作iPhone手机

    安装过程

    1. 安装WebDriverAgent:https://github.com/facebook/WebDriverAgent

    2. 及其依赖的库Carthage:https://github.com/Carthage/Carthage

    3. 需要npm的支持

    启动与停止WDA服务器

    方式1:命令行启动模拟器 xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'platform=iOS Simulator,name=iPhone 6' test

    方式2:在真机上运行参考这篇文章进行配置:ATX 文档 - iOS 真机如何安装 WebDriverAgent

    停止运行WDA:Xcode-Product-Stop

    安装并了解facebook-wda的用法

    1. 安装wda的python库:pip install facebook-wda

    2. 了解facebook-wda

    遇到的问题与解决方法

    1. 从app安装包的plist文件中查看iOS应用的bundleId

    2. 通过facebook-wda点击home键报错解决办法: “这个是wda的问题,判断桌面是否出现导致了超时,英文系统是Docker,中文系统是程序坞”,解决方法是更改WebDriverAgent文件夹下WebDriverAgentLib文件夹下的FBSpringboardApplication.m文件中fb_isApplicationBoardVisible函数的返回为return self.otherElements[@"Dock"].isEnabled || self.otherElements[@"程序坞"].isEnabled;

    编写脚本

    可以通过编写运行python脚本,通过调用wda封装的方法,与WebDriverAgentRunner运行的服务器交互。实现一些自定义的行为,达到操控iPhone的目的。例如:

    import wda
    
    c = wda.Client('http://WDAServer的ip:8100')
    print(c.status())
    c.healthcheck()
    c.home()
    s = c.session('app的bundleId')
    s(text="跳过").click_exists(timeout=5.0)
    s(text="广场").click_exists(timeout=5.0)
    s.close()

    以上代表的基本关键操作如下:

    1. 连接已经运行起来的WebDriverAgentRunner服务器,在xcode的终端可以看到WDAServer的ip

    2. 通过app的bundleId来启动app

    3. 判断是否有指定文字的按钮并点击,设置超时时间为5s

  • 相关阅读:
    KVM镜像管理利器-guestfish使用详解
    两台linux机器时间同步
    git配合tortoiseGit的基础使用
    使用yum来下载RPM包而不进行安装
    Linux解压缩总结
    Linux下使用git命令及github项目
    linux shell常用快捷键
    调用 sphinx-build生成HTML文件
    复制virtualenv环境到其他服务器环境配置的方法
    CentOS 6.5 PYPI本地源制作
  • 原文地址:https://www.cnblogs.com/LanTianYou/p/10205499.html
Copyright © 2020-2023  润新知