标签: appium

Appium+Python3+iOS真机环境搭建

Appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web 应用和混合应用。
1.环境配置
Mac系统自带的Python版本是2.7,当前要用新版,这里我选择的Python版本是3.5。下载安装。
删除掉mac自带的python2.7
sudo rm -R /System/Library/Frameworks/Python.framework/Versions/2.7
加上:
alias python=’/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5’
保存退出,执行:
source ~/.bash_profile
2,把appium和selenium安装到python3.5的set-packages中
3,appium运行时jdk的安装
访问Oracle官网 http://www.oracle.com
jdk下载的地方https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html
下载安装jdk,打开Finder,可以在下图所示的路径中找到安装好的jdk 1.8.0_40.jdk
%title插图%num

Contents下的Home文件夹,是该JDK的根目录

%title插图%num

打开终端配置jdk环境变量:
如果你是*次配置环境变量,可以使用“touch .bash_profile” 创建一个.bash_profile的隐藏配置文件(如果你是为编辑已存在的配置文件,则使用”open -e .bash_profile”命令):
输入如下配置:

%title插图%num

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home
PATH=$ JAVA_HOME/bin:$ PATH:.
CLASSPATH=$ JAVA_HOME/lib/tools.jar:$ JAVA_HOME/lib/dt.jar:.
export JAVA_HOME
export PATH
export CLASSPATH
然后保存关闭该窗口。
使用”source .bash_profile”使配置生效
输入 echo $ JAVA_HOME 显示刚才配置的路径
测试输入java -version
4,sdk环境变量的配置
在命令行输入 open -e .bash_profile , 打开.bash_profile文件,输入如下配置:
export ANDROID_HOME=/Library/Java/sdk
export PATH=$ {PATH}: $ {ANDROID_HOME}/tools
export PATH=$ {PATH}: $ {ANDROID_HOME}/platform-tools
export PATH=$ {PATH}: $ {ANDROID_HOME}/build-tools

export PATH=${PATH}:/Library/Java/sdk/platform-tools:/Library/Java/sdk/tools
%title插图%num

然后保存并关闭。
在命令行输入source .bash_profile ,使之生效。
5,ios的元素定位工具
a.Appium自带的Inspector工具
b.Macaca的app-inspector工具,具体地址:https://macacajs.github.io/app-inspector/cn/
c.Xcode自带的accessibility-inspector工具
具体地址:http://blog.csdn.net/icetime17/article/details/42211915
d.Appium团队提供的appium-ios-inspector
具体地址:https://github.com/mykola-mokhnach/Appium-iOS-Inspector
e.通过flex插件,具体地址:https://github.com/Flipboard/FLEX

ios-deploy时,终端构建失败

安装ios-deploy时,终端构建失败:
ios-deploy是一个从mac电脑把app打包到手机的工具
安装:sudo npm install -g ios-deploy –unsafe-perm=true

安装出现问题:
** BUILD FAILED **
The following build commands failed:
CompileC /usr/local/lib/node_modules/ios-deploy/build/ios-deploy.build/Release/ios-deploy-lib.build/Objects-normal/x86_64/libios_deploy.o /usr/local/lib/node_modules/ios-deploy/src/ios-deploy-lib/libios_deploy.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)
npm ERR! code ELIFECYCLE
npm ERR! errno 65
npm ERR! ios-deploy@1.11.0 preinstall: ./src/scripts/check_reqs.js && xcodebuild`
npm ERR! Exit status 65
npm ERR!
npm ERR! Failed at the ios-deploy@1.11.0 preinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

解决方式:
需要把macOS,ios,xcode版本号升级为一致,因为用命令安装的时候默认安装*新的ios-deploy,而电脑的配置不相符:

升级之后执行
终端运行:sudo xcode-select –switch /Applications/Xcode.app/Contents/Developer
在执行:sudo npm install -g ios-deploy –unsafe-perm=true
open /Applications/Xcode.app/Contents/Developer

安装成功

appium+iOS元素的定位方式

查找元素的顺序,从快到慢:
查找元素的顺序,从快到慢:
ios_predicate >> accessibility_id >> class_name >>xpath
(论坛比较多的说法是class_name>>accessibility_id,在这里我们姑且认为它们的速度是一样的。)
1,ios_predicate:OS 的 UI 自动化中,使用原生支持的Predicate定位方式是*好,可支持元素的单个属性和多个属性定位,强烈推荐使用
driver.find_element_by_ios_predicate(“value == ‘ClearEmail’”)
driver.find_element_by_ios_predicate(“type == ‘’ AND value == ‘’)
https://www.jianshu.com/p/a6c2d72fe704
2,accessibility_id
替代以前的name定位方式,在 iOS 上,主要使用元素的label或name(两个属性的值都一样)属性进行定位,如该属性为空,也是不能使用该属性。
driver.find_element_by_accessibility_id(‘ClearEmail’)
3、class_name
使用元素的type属性定位,特别注意该属性的唯一性!class_name唯一的情况并不多,一般情况下用不上。
driver.find_element_by_class_name(‘XCUIElementTypeButton’)
4、xpath
由于 iOS 10开始使用的 XCUITest 框架原生不支持,定位速度很慢,所以官方现在不推荐大家使用,也有其他替代的定位方式可使用。
1)使用*对路径定位:
driver.find_element_by_xpath(’/XCUIElementTypeApplication/XCUIElementTypeButton’)
2)使用相对路径定位
driver.find_element_by_xpath(’//XCUIElementTypeButton’)
3)通过元素的索引定位
driver.find_element_by_xpath(’//XCUIElementTypeButton[index]’)
4.通过元素的属性定位
一种属性:
driver.find_element_by_xpath(”//className[@value=‘ClearEmail’]”)
两种属性:
driver.find_element_by_xpath(“//className[@value=‘ClearEmail’][@ visible =true]”)
部分属性(*强大):driver.find_element_by_xpath(“//className[contains(@value,‘ClearEmail’)]”)
5,iOSNsPredicateString
仅支持 iOS 10或以上,可支持元素的单个属性和多个属性定位,推荐使用。
一种属性:MobileBy.iOSNsPredicateString(“type == ‘XCUIElementTypeButton’”)
两种属性:MobileBy.iOSNsPredicateString(“type == ‘XCUIElementTypeButton’ AND label == ‘更多信息’”)

Appium 搭建 IOS

1、 安装Xcode

%title插图%num

xcode是苹果的一个开发工具,我们主要使用xocde自带的ios模拟器,在模拟器上进行iOS app的自动化测试。
打开MAC机上的APP Strore,搜索Xcode,进行安装或者更新,注意观察下xcode的更新日志,上面有写支持的iOS SDK版本。

2、 安装JDK
默认安装JDK
编辑环境变量文件
vi ~/.bash_profile
编辑后生效
source ~/.bash_profile
.bash_profile文件内容
JAVA_HOME=”/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/”
PATH=”PATH:PATH:JAVA_HOME/bin”
export JAVA_HOME
export PATH

3、 安装homebrew
brew是mac上一个软件管理工具,通过它可以在终端输入命令安装各种软件包
打开https://brew.sh/

%title插图%num

将地址拷贝到终端进行安装
(brew list列出已安装的软件)

4、 安装libimobiledevice
主要是第三方访问iOS设备的接口封装
brew install –HEAD libimobiledevice

5、 安装ideviceinstaller
用于给iOS设备安装卸载应用或者备份应用
brew install –HEAD ideviceinstaller

6、 安装ios-webkit-debug-proxy
在做iOS的h5页面的时候,肯定会需要去做webview调试来进行代码调试,而iOS webview调试需要区分真机和模拟器,因为具体的实现原理不一样的,模拟器使用 remote debugger,可以直接通过safari远程调试,而真机使用 ios-webkit-debugger-proxy去远程调试的。
注意,测试包必须要使用develop证书打包,才可以进行真机调试。
通过如下命令进行安装
brew install ios-webkit-debug-proxy

安装之后运行如下命令查看是否能够调起ios-webkit-debug-proxy
ios_webkit_debug_proxy -c XXXXXXXXXX:27753 -d XXXXXXXXXX表示设备UDID

运行上述命令发现报错如下:
Could not connect to lockdownd. Exiting.: Permission denied
通过查找资料,发现网上大部分的解决方案是执行如下命令:
sudo chmod -R 777 /var/db/lockdown/

appium如何启动ios-webkit-debug-proxy
发现ios-webkit-debug-proxy可以通过设置DesiredCapabilities来调起,代码如下:
cap.setCapability(“startIWDP”,true);

7、 安装maven
默认安装maven
配置环境变量:
MAVEN_HOME=”/Users/young/Documents/dev/apache-maven”
然后在PATH变量*后追加:$MAVEN_HOME/bin
*后在输入 export MAVEN_HOME

8、 安装android sdk
默认安装android-sdk
配置环境变量:
ANDROID_HOME=”/Users/young/Documents/dev/android-sdk-macosx/”
在PATH变量后续追加:
:ANDROIDHOME/tools:ANDROIDHOME/tools:ANDROID_HOME/platform-tools
*后要export ANDROID_HOME
完整的.bash_profile内容(包含了JAVA、Android和Maven的环境变量配置):
ANDROID_HOME=”/Users/young/Documents/Dev/android-sdk-macosx/”
JAVA_HOME=”/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/”
MAVEN_HOME=”/Users/young/Documents/Dev/apache-maven”
PATH=”PATH:PATH:JAVA_HOME/bin:ANDROIDHOME/tools:ANDROIDHOME/tools:ANDROID_HOME/platform-tools:$MAVEN_HOME/bin”
export JAVA_HOME
export ANDROID_HOME
export MAVEN_HOME
export PATH

9、 安装node
brew install node
检查版本node -v

10、 安装npm
是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。
brew install npm

11、 安装appium
npm install -g appium
或者
npm install cnpm -g –registry=https://registry.npm.taobao.org
npm view appium versions #查看appium所有的版本号

12、 安装ios-deploy
是一个使用命令行安装ios app到连接的设备的工具,原理是根据os x命令行工程调用系统底层函数,获取连接的设备、查询/安装/卸载app。
npm install -g ios-deploy

13、 安装appium-doctor
是一个用于验证appium安装环境的工具,可以诊断出Node/iOS/Android环境配置方面的常见问题。
npm install appium-doctor -g
之后执行 appium-doctor 查看环境

%title插图%num

14、 安装WebDriverAgent(WDA)
如果是模拟器测试,不需要安装WDA,如果用真机一定要安装WDA
前提:电脑必须安装了Carthage
可以通过brew install Carthage
或者通过github下载pkg文件直接安装(源码安装可能会报错)https://github.com/Carthage/Carthage/releases

WebDriverAgent安装步骤:
1.进入WebDriverAgent
方式一:
从github上下载代码
git clone https://github.com/facebook/WebDriverAgent
用此方法安装,在appium执行的时候,要加
“xcodeOrgId”: “”,
“xcodeSigningId”: “iPhone Developer” 这两个参数,
TeamID 在 https://developer.apple.com/account/ 里左侧的 Member ship 中找到

%title插图%num

例如:
{
“platformName”: “iOS”,
“platformVersion”: “10.3”,
“deviceName”: “test”,
“automationName”: “XCUITest”,
“app”: “/Users/automation/test/VWallet.ipa”,
“bundleId”: “com.xiaoV.conchBeta”,
“udid”: “ab2ac6b5e375211d5bd8e8e3eedeb15704759390”,
“xcodeOrgId”: “6XXXXXXXXX”,
“xcodeSigningId”: “iPhone Developer”
}

方式二:
cd /Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent

%title插图%num

目录在appium安装目录下,具体路径参照自己的路径,可以通过find命令查找

2.在当前目录下执行脚本
sh ./Scripts/bootstrap.sh

3.编译WebDriverAgent.xcodeproj
双击打开当前目录下的WebDriverAgent.xcodeproj文件(工程文件在第1步的目录下)

注意:build时需要指定一个Development team,可以用个人Apple ID账号,生成个人证书和team(在Xcode->Preferences->Account中配置),也可以利用开发者账号。

%title插图%num

%title插图%num

%title插图%num

PROJECT->WebDriverAgent、TARGETS->WebDriverAgentLib和WebDriverAgentRunner的Signing使用个人的证书和Team(画黑色横线的部分)

%title插图%num
TARGETS->WebDriverAgentLib和WebDriverAgentRunner的Product Bundle Identifier使用一个新名字,因为Bundle ID不能重复

%title插图%num
点击Product->Build,将工程文件编译一下

4.测试一下,然后手机上信任证书
安装方式一:
还是在WebDriverAgent目录下,执行下面的命令来测试一下是否生效了
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination ‘id=你的udid’ test
例如:
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination ‘id=3340586f5abe813300530112f2238ac9b7e31e88’ test
如果没有报错证明安装成功,同时手机上会安装一个WebDriverAgent软件

%title插图%num

说明:如果编译WebDriverAgent时使用了自己的证书,需要再手机设置->通用里信任一下证书

安装方式二:
菜单栏选择目标设备

%title插图%num
Scheme选择WebDriverAgentRunner

%title插图%num
*后运行 Product -> Test
一切正常的话,手机上会出现一个无图标的WebDriverAgent应用,启动之后,马上又返回到桌面。这是很正常的不要奇怪。
此时控制台界面可以看到设备的IP。如果看不到的话,使用这种方法打开

%title插图%num

通过上面给出的IP和端口,加上/status合成一个url地址。例如http://10.0.0.1:8100/status,然后浏览器打开。如果出现一串JSON输出,说明WDA安装成功了。

测试WebDriverAgent时遇到的问题1:
Testing failed:
Signing for “WebDriverAgentRunner” requires a development team. Select a development team in the project editor.
Code signing is required for product type ‘UI Testing Bundle’ in SDK ‘iOS 10.3’
需要下图的这两个target都配置一下debug的证书和配置文件,然后编译

%title插图%num

测试WebDriverAgent时遇到的问题2:
Testing failed:
Test target WebDriverAgentRunner encountered an error (Early unexpected exit, operation never finished bootstrapping – no restart will be attempted)

解决方法:
进入手机的设置->通用->描述文件与设备管理,信任编译WebDriverAgent时选择的证书
然后再执行该命令就可以了

%title插图%num
15、 安装IOS模拟器
打开已经安装好的xcode(位于/Applactions/Xcode),如图

%title插图%num

然后选择Create a new Xcode Project,接下来按照图操作

%title插图%num

%title插图%num

%title插图%num

%title插图%num

%title插图%num

然后会是这个样子

%title插图%num

如果你的xode中存在iOS SDK,那么点击

%title插图%num

这个地方会弹出可用的模拟器,比如我的

%title插图%num

此时点击这个iPhone 6就会由这个模拟器来执行这个project。点击这个三角符号,进行运行操作

%title插图%num

注意观察

%title插图%num

IOS 模拟器启动了

%title插图%num

如果没有ios SDK可以在这里下载更多的ios simulator

%title插图%num

点击之后如图

%title插图%num

注意:根据自己需求来下载相应的iOS SDK。
另外你还可以将ios模拟器固定在DOCK,这样每次启动ios模拟器可以从dock上点击启动即可,如下图所示:

%title插图%num

友情链接: SITEMAP | 旋风加速器官网 | 旋风软件中心 | textarea | 黑洞加速器 | jiaohess | 老王加速器 | 烧饼哥加速器 | 小蓝鸟 | tiktok加速器 | 旋风加速度器 | 旋风加速 | quickq加速器 | 飞驰加速器 | 飞鸟加速器 | 狗急加速器 | hammer加速器 | trafficace | 原子加速器 | 葫芦加速器 | 麦旋风 | 油管加速器 | anycastly | INS加速器 | INS加速器免费版 | 免费vqn加速外网 | 旋风加速器 | 快橙加速器 | 啊哈加速器 | 迷雾通 | 优途加速器 | 海外播 | 坚果加速器 | 海外vqn加速 | 蘑菇加速器 | 毛豆加速器 | 接码平台 | 接码S | 西柚加速器 | 快柠檬加速器 | 黑洞加速 | falemon | 快橙加速器 | anycast加速器 | ibaidu | moneytreeblog | 坚果加速器 | 派币加速器 | 飞鸟加速器 | 毛豆APP | PIKPAK | 安卓vqn免费 | 一元机场加速器 | 一元机场 | 老王加速器 | 黑洞加速器 | 白石山 | 小牛加速器 | 黑洞加速 | 迷雾通官网 | 迷雾通 | 迷雾通加速器 | 十大免费加速神器 | 猎豹加速器 | 蚂蚁加速器 | 坚果加速器 | 黑洞加速 | 银河加速器 | 猎豹加速器 | 海鸥加速器 | 芒果加速器 | 小牛加速器 | 极光加速器 | 黑洞加速 | movabletype中文网 | 猎豹加速器官网 | 烧饼哥加速器官网 | 旋风加速器度器 | 哔咔漫画 | PicACG | 雷霆加速