环境搭建参考:python+Appium+xcode+android studio自动化测试环境搭建_android studio安装python_Vermouth_00的博客-CSDN博客

Android

一、连接设备

数据线连接android设备到电脑上,打开USB调试开关并进行授权,adb devices命令验证设备成功连接。

二、启动appium服务

如果是桌面版appium:

点击start server启动即可;

命令行版appium:

nohup appium -p 4725 -U 4b72ec30 --session-override --allow-insecure=adb_shell > appium_a32a6a4e.log &

nohup是后台运行,- U后面跟着设备序列号,可用adb devices命令查看。

三、appium与设备进行连接

desired_caps = {
            'platformName': 'Android',
            'platformVersion': '11',
            'deviceName': '4b72ec30 ',#不会进行校验,但是没有会报错
            'appActivity': 'com.autonavi.map.activity.NewMapActivity',#app的启动页面
            'appPackage': 'com.autonavi.minimap'
        }
self.driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)

iOS

一、数据线连接手机到电脑

输入密码信任电脑

二、启动appium服务

如果是桌面版appium:

点击start server启动即可;

命令行版appium:

"start /b appium --session-override -a " + address + " -p " + Appium_port+" --webdriveragent-port “+webdriveragent_port

webdriveragent_port:与iOS客户端交互的webdriveragent的端口号,默认8010

三、Xcode编译运行wda

(1) 设置【WebDriverAgentLib】、【WebDriverAgentRunner】、【IntegrationApp】的Team,选择自己登录的Apple ID,登录Apple ID:(左上角Xcode-》Preferrence-》点击下面的进行增删)

(2)设置【WebDriverAgentRunner】、【IntegrationApp】Build Settings下Packaging目录下Product Bundle Identifier的id,把其中facebook改掉就行,自己随意改

  (3) 设置【Product】→【Scheme】选择【WebDriverAgentRunner】

 (4) 选中自己连接的设备,command + u 运行即可

 (5) 第一次运行需要在真机设置里面给证书设置信任【设置】→【通用】→【描述文件与设备管理】选择开发者APP下面刚安装的WebDriverAgent信任即可,在次command+u即可正常运行 

(6)在控制台中可以看到以下信息:

 

有些iphone手机通过手机的IP和端口号还不能访问,此时需要将手机的端口转发到mac上,终端运行以下命令

iproxy 8100 8100

将手机的8100端口,映射到电脑的8100端口上。这样我们就能通过访问电脑的8100端口来访问到手机了。

网上查到说“为了持续集成”,使用如下方法,在代码中启动wda,不需要在xcode启动。

desiredCapabilities.setCapability("useNewWDA", true);

在命令行下执行iproxy 8100 8100运行代理后,可以在浏览器打开 http://127.0.0.1:8100/status ,查看iOS设备是否能成功连接。

四、appium与设备进行连接

参数配置

desired_capabilities = {
  "platformName": "ios",
  "deviceName": "iPhone7P",
  "platformVersion": "13.6.1",
  "bundleId": "com.meituan.imeituan-beta",
  "udid": "e372ee5092535ad955329aac04c450fb78b96abd"
}

获取iOS手机的udid:在finder中点击连接的设备,默认显示的是内存、电量,在此处再次点击可切换为序列号、udid,然后右键可以复制udid;

 

获取ipa的bundle ID,可用tidevice

 tidevice applist

 desired_caps = {
              "platformName": "ios",
              "deviceName": "iPhone7P",
              "platformVersion": "13.6.1",
              "bundleId": "com.meituan.imeituan-beta",
              "udid": "e372ee5092535ad955329aac04c450fb78b96abd",
              "clearSystemFiles": "true"
            }

        self.driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)

之前运行都是好的,今天遇到一个问题:

An unknown server-side error occurred while processing the command. Original error: Could not load a driver for platformName 'ios'. Please verify your Appium installation

卸载重装appium后解决。

进阶:

Android+appium多机自动化参考:Android+python+appium多机自动化_Vermouth_00的博客-CSDN博客

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐