一、环境搭建篇

(一)安装JDK

大家自行安装

(二)安装Appium

1、appium desktop

2、appium server

> brew install node # get node.js

> npm install -g appium # get appium

> npm install wd # get appium client

> appium & # start appium

> node your-appium-test.js

(三)iOS真机环境配置

1、Homebrew

如果没有安装过Homebrew,先安装

2、npm

3、安装依赖库

brew install libimobiledevice --HEAD  #可获取ios真机设备的信息

sudo npm install -g ios-deploy --unsafe-perm=true #如果要在iOS10+的系统上使用appium,则需要安装ios-deploy

brew install carthage

brew install usbmuxd

4、appium-doctor安装

npm install appium-doctor -g

安装后执行appium-doctor –ios指令,可以查看与iOS相关配置是否完整,下图是全部配置都成功,如果出现有一项不正确在执行一次就可以,或者直接跳过

appium-doctor –ios

5、更新Appium中的WebDriverAgent

2)cd进入下载后的WebDriverAgent文件

3)执行./Scripts/bootstrap.sh

4)用Xcode打开WebDriverAgent.xcodepro文件

配置WebDriverAgentLib和WebDriverAgentRunner的证书

如图所示配置,

修改bundleid,随便修改,只要不跟已经注册过的冲突就行了,要求唯一

team选择真实的开发者账号

手机连上电脑

选择自己的手机

然后点击test运行

如果出现如下图错误,在ios设备-设置-通用-描述文件和设备管理,信任一下开发者,再次test运行就不会出现错误了

运行成功后,在xcode控制台可以打印出ip地址和端口号

进入到Appium中的WebDriverAgent目录,目录路径如

/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/

将自己下载并编译后的WebDriverAgent替换Appium原有的WebDriverAgent

(六)利用Appium-Python-Client进行iOS的自动化测试

这一步是将python与appium关联起来

在终端输入:pip install Appium-Python-Client,安装即可

(七)Appium中开启iOS webview调试进行h5自动化测试

在做ios的h5页面测试时,测试包必须要使用develop证书打包,app要是debug包,才可以进行真机测试

实践:如果在ios真机的webview页面执行appium自动化,需要做以下准备:

1)安装ios_webkit_debug_proxy,在执行webview自动化时必须启动该服务

a.brew install ios-webkit-debug-proxy

2)运行ios-webkit-debug-proxy

a.官方提供的命令:ios_webkit_debug_proxy -c UUID:27753 -d

b.使用chrome dev-tools调试

i.运行命令

ios_webkit_debug_proxy -f chrome-devtools://devtools/bundled/inspector.html

ii.根据日志提示,获得端口并打开页面对应端口页面,如lcoalhost:9221

iii.点击设备提示拷贝链接到地址栏即可访问;

c.使用safari调试

i.打开mac上的safari浏览器开发者模式

ii.打开设备上的webview页面

iii.点击safari浏览器菜单中的开发-device,选择进程;

在appium中使用ios-webkit-debug-proxy:

第一种方式:set the desired capability,加上"startIWDP":true,

// example desired capabilities

{

"browserName":"Safari",

"platformName":"iOS",

"deviceName":"iPhone 7",

"automationName":"XCUITest",

"startIWDP":true,

"udid":"auto"

}

第二种方式:直接手动启动ios-webkit-debug-proxy,然后再执行自动化,注意此时需要制定端口27753(appium默认iwdp端口为这个)以及设备ID,即

ios_webkit_debug_proxy -c 17d5c2ae122f79a23fbd29168e0948dce22e8ce5:27753 -d

二、元素定位方法篇

(一)通过weidtor定位元素

1)安装

终端中输入,安装weditor

pip install weditor

2)启动

注意:先要运行webdriveragent

然后终端输入命令:python -m weditor

点击connect后,出现手机画面,reload是同步手机画面

点击界面元素,右侧出现该元素的定位信息

(二)通过appium desktop定位

1、运行Appium-Desktop,点击start server,开启server

2、点击Start Inspector Session按钮

3、配置Desired Capabilities

如何获取设备信息?

设备连接上电脑,然后在终端输入idevice_id -l,就可以显示当前设备的udid

ideviceinfo显示当前设备的信息,可以查看当前的deviceName, platformName

SHAPE \* MERGEFORMAT

ideviceinstaller -l查看当前设备所有安装的app的信息

配置好信息后,点击start session

运行成功后,会弹出一个控制界面,在该界面中可以控制手机上正在运行的程序,可以定位元素

三、python+appium+ios,自动化测试实践

(一)新建文件test.py

(二)简单自动化脚本编写

#encoding=utf-8

import time

import os

import unittest

from appium import webdriver

#初始化

class MyTestCase(unittest.TestCase):

def setUp(self):

desired_caps = {

'platformName': 'iOS',

'deviceName': 'iphone',

'platformVersion': '12.4',

'bundleId' : 'com.jack.TongHua',

'udid' : 'bf5ffb03be1c90e05665f41dd648b8fb60a0c2c0', 'startIWDP':'true'

}

#初始化驱动

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

def testRefresh(self):

#点击刷新按钮

self.driver.find_element_by_accessibility_id("btn update").click()

def tearDown(self):

#退出

self.driver.quit()

if __name__ == '__main__':

unittest.main()

1、对类MyTestCase添加setUp函数(这是测试用例执行前的准备动作,负责告诉appium监听那个端口、与那个手机连接、安装那个应用等信息)

2、对类MyTestCase添加TearDown函数(这是测试用例执行结束后的动作,可以执行保存执行结果等操作)

(三)脚本写好后,先要运行webdriveragent

方法一:用xcode的运行webdriveragent

方法二:使用命令行运行webdriveragent

先切到webdriveragent目录下,然后输入xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination id='bf5ffb03be1c90e05665f41dd648b8fb60a0c2c0' test

(四)执行自动化测试脚本

(五)pyhton+appium+iOS,遍历真机的webview

1、运行ios_webkit_debug_proxy

ios_webkit_debug_proxy -c bf5ffb03be1c90e05665f41dd648b8fb60a0c2c0:27753 -d

2、driver.contexts获得页面所有context,这个方法会将context存在list里,打印出list内容,查看你要的webview在第几个,用switch_to.context()切换到那个webview即可,代码如下

#假设我的目标webview存在list里的第三个

myWebview = self.driver.context[2]

self.driver.switch_to.context(myWebview)

这样就切换到了目标webview,接下来就可以像web自动化一样,操作html元素了。

3、怎么得到元素属性

1).启动webkit服务,并指定谷歌浏览器进行监听

ios_webkit_debug_proxy -f chrome-devtools://devtools/bundled/inspector.html

2).运行用例代码,停留在含webview的页面

3).谷歌浏览器地址输入http://127.0.0.1:92223,就可以看到手机的webview url

4)将url复制出来,就可以像定位web元素一样去定位h5元素

手机调试python的软件_Appium+Python(ios真机移动端App H5混合自动化实战测试)相关推荐

  1. android 手机调试链接不上,解决android 连接真机调试连接不了的问题

    无论是eclipse还是Android Studio ,有时候会出现无法连通手机的问题,显示: no target device fund. 可以根据以下几个步骤来解决此问题: 一.手机连接电脑,是否 ...

  2. iOS真机调试详细图文教程

    相关文章链接: < Xcode7 免证书/$99 真机调试教程 > <Provisioning Profile和Code Signing常见问题,原因分析及解决方法汇总.> 最 ...

  3. ios真机调试教程(不上架App Store安装到手机)

    详细步骤 1 1.申请一个APPid(应用标识符 2.添加调试设备 3.申请iOS调试证书 4.配置调试描述文件 5.iOS打包ipa 6.安装到手机调试 END 一.创建唯一标示符App IDs 1 ...

  4. ios真机调试,iTunes检测得到,hbuilder未检测到手机和模拟器的解决办法

    ios真机调试,iTunes检测得到,hbuilder未检测到手机和模拟器的解决办法 在做ios集成极光认证的时候,一直无法ios真机调试,试了网上非常多方法,什么下载iTunes,下载爱思修复驱动, ...

  5. iOS真机调试 for Xcode 5

    由于Xcode5的到来,关于iOS软件进行真机调试方面,有了一些变化,苹果在Xcode 5中修改了一些规则,一方面是阻止以往破解的方式进行调试(免证书).另一方面是添加了自动生成证书的功能特性,来加快 ...

  6. 微信开发者工具模拟器、IOS真机调试、Android真机调试中Editor效果不一致问题

    问题环境: 1.微信开发者工具1.05.2110290(以下简称"工具") 2.真机调试1.0版本(不区分IOS与Android) 3.微信的editor component,用于 ...

  7. IOS真机调试包 iOS15.0

    最新 iOS 真机调试包15.0 最近一不小心升级IOS15.0,我滴个乖乖! 由于xcode还是用的12.0,也不算太旧,就不想升级(因为升级xcode14要12.4G,然后还需要更新mac系统,当 ...

  8. iOS 真机调试包集合 包含 iOS 12.4 不断更新

    升级 iOS 12 之后,使用 Xcode 9 真机调试会提示错误: Could not locate device support files. This iPhone 6 Plus is runn ...

  9. 解决xcode iOS真机调试正常,模拟器失败问题

    解决xcode iOS真机调试正常,模拟器失败问题 参考文章: (1)解决xcode iOS真机调试正常,模拟器失败问题 (2)https://www.cnblogs.com/HemJohn/p/55 ...

最新文章

  1. 春天来了,我也发“芽”了!
  2. MapReduce源码之InputFormat
  3. LeetCode - Reorder List
  4. curl请求模拟post发送json
  5. HTML5获取autofocus 属性:输入文字点定位到该位置
  6. Hulu直播服务难点解析(三):关键收获
  7. 1073 多选题常见计分法 (20 分)_66行代码AC
  8. Shiro+SpringBoot 时,anon配置的匿名路径被拦截,自定义配置类走过的坑
  9. webpack 入口文件 php,如何实现webpack多入口文件打包配置
  10. [Tip: bat] About %~dp0
  11. 一起谈.NET技术,NHibernate 3.0.0.Alpha1 发布及新特性介绍
  12. php v9搜索不到内容,關於如何解決PHPCMS V9內容搜索顯示不全問題解決方案
  13. python 高斯烟羽模型_高斯扩散模型-高斯烟羽大气污染扩散模型
  14. 最新服务器处理器天梯,服务器cpu天梯图2020
  15. 武汉理工计算机网络教学平台,武汉理工大学 操作系统
  16. 【sdx62】WCN6855 WCN6856 WiFi 增加强制40MHz频宽的功能实现
  17. Guessing the Greatest (hard version)-(交互+二分+思维)
  18. Fault Description Based Attribute Transfer for Zero-Sample Industrial Fault Diagnosis
  19. 锂离子电池是由什么组成的
  20. java中虚函数_虚函数

热门文章

  1. [转载]VirtualBox网络配置详解
  2. cannot resolve symbol xxxx问题
  3. Python中文编码问题详解
  4. CentOS7 安装nginx
  5. patator mysql 字典_利用patator进行子域名爆破
  6. 关于response格式转换
  7. click传值vue_对vue下点击事件传参和不传参的区别详解
  8. Ubuntu 键盘错位解决 更改键盘布局
  9. 嵌入式常见笔试题总结(4)
  10. 如何用css和HTML结合画熊,结合伪元素实现的纯CSS3高级图形绘制