Appium Appium Desktop 简单介绍 —— xcodebuild failed with code 65 解决

恒温 · 2017年03月08日 · 最后由 测试成长中 回复于 2018年05月09日 · 7181 次阅读
本帖已被设为精华帖!

遇到这种问题:

Unable to launch WebDriverAgent because of xcodebuild failure: xcodebuild failed with code 65

重新在你的真机上编译 WebDriverAgent

重新编译还会遇到问题的同学参试下:

  1. 到 webdriverAgent 目录下
  2. 运行 sh ./Scripts/bootstrap.sh
  3. 再使用 xCode build 一次。

beta3 下载地址

https://pan.baidu.com/s/1hrQ4itm —— windows
https://pan.baidu.com/s/1c13B8TM —— mac

beta2 下载地址

更新下: https://pan.baidu.com/s/1geIy7cB 下载地址。感谢 mingway。

历史由来

Appium 的 GUI 失去维护很久了(1.5.3 之后),然后看到官方又推出了一个 Appium Desktop。这是一个什么鬼呢?我们 T 社有同学已经拿来玩了。(https://testerhome.com/topics/7829 @wxlsh114)。不过介绍的比较简单,恰巧我翻 medium,也看到一篇老外的介绍。于是想,要不下来看看吧。

Appium Desktop 的地址在 https://github.com/appium/appium-desktop,已经有 1.0.0-beta.2 提供下载了。支持 mac,windows,还有 linux,诚意满满。

界面

和之前的 GUI 版本一样,安装好之后打开就可以了,啥其他环境都不要配置,注意我这里值得是 Appium Server 本身的依赖,没有指 Appium 用例运行的环境,那些没有安装 xcode,没有安装 Android SDK 的同学先把自己的开发环境搞定。

简单版本 —— 使用所有的默认配置启动 Appium

这个界面会使用默认配置启动 Appium Server,除了 Host 和 Port 外,其他都是不能修改的。

高级版本 —— 自定义配置

这个界面其实和以前的 GUI 没啥区别,就是让你配置各种值的。

保存配置

高级模式里的自定义配置可以保存起来,在这个界面被加载出来。

运行终端

我在想他们是不是换了交互设计师了。。

新会话窗口

新会话其实是提供了一种让你启动一个会话的能力,有点调试的味道在里面。这里你需要了解你创建这个会话所需要的 desiredCapibility。

这个界面里还提供了其他的 Appium 服务商,比如 SauceLabs, TestObject。

The Inspector —— 重头戏

最近很多人问,怎么定位元素啊,之前会推荐 Macaca 的 app-inspector。这货出来估计也可以用用了。

亲测可用:xcode8 + 模拟器是 ios10.2

更新下 Android 的真机:

总结下

一个让 Appium 使用更加方便的 UI 工具。要理解 Appium 还是得好好看看源码,了解下原理。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 255 条回复 时间 点赞

已下载试用,感觉还不错。

自从把截图和定位做到 uiautomatorviewer 中后,再也不用这个界面了 🚕

bauul 回复

老司机

bauul 回复

uiautomatorviewer 自动生成 xpath (兼容 android 和 iOS) · TesterHome
https://testerhome.com/topics/7404

@Lihuazhang The Inspector 是 appium desktop 自带吗? 为什么找不到

完美

steven 回复

看我的 gif 图

deviceName 真机怎么填

恒温 回复

nice

支持 ios 10.0 以上了么?

恒温 #13 · 2017年03月08日 Author
testly 回复

支持

恒温 #14 · 2017年03月08日 Author
啊啊 回复

设备的 udid

匿名 #15 · 2017年03月08日

只有我 git 库代码下载下来后不知道怎么打开吗?mac 上。

匿名 #16 · 2017年03月08日

还有是否支持 xcode 8 呢?

恒温 #17 · 2017年03月08日 Author

直接用 release 不要用源代码啊

666666,刚刚昨天我的 4s 测试机变成砖头了,就需要这个玩意

用完觉得直接在 Selected Element 多加一栏 Xpath 展示会更完美

恒温 #21 · 2017年03月08日 Author
steven 回复

的确

匿名 #22 · 2017年03月08日

appium 里面的 inspector 怎么打开的?没有找到。

恒温 #23 · 2017年03月08日 Author

start session 会自动生成的。 看我的 gif 呀

恒温 回复

ui 元素能不能不用 macaca 的,用之前版本的 inspect

windows 是安装最后的那个吧?

我安装的是最后一个,然后运行出错了,显示是设备未找到,我用的模拟器,adb devices 上也是显示有设备的,换用老版本的 appium 也能跑
[ADB] Error: Error getting device platform version. Original error: Error executing adbExec. Original error: 'Command 'C:\Users\shishuaigang\AppData\Local\Android\sdk\platform-tools\adb.exe -P 5037 -s 192.168.86.101:5555 shell getprop ro.build.version.release' exited with code 4294967295'; Stderr: 'error: device '192.168.86.101:5555' not found'; Code: '4294967295'
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '192.168.86.101:5555'
desired_caps['appPackage'] =xxxxx
desired_caps['appActivity'] = '.loginregister.LanuchSetActivity'
desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True

终于出来了,赞

恒温 #28 · 2017年03月08日 Author
shishuaigang 回复

安卓没试过。

恒温 回复

谢谢,话说这个 beta 支持安卓吗?或这支持安卓哪个版本以上的?我用的是 android 5.1 API 22

思寒_seveniruby 将本帖设为了精华贴 03月08日 12:02

加精理由: 介绍详细丰富.

恒温 #32 · 2017年03月08日 Author
shishuaigang 回复

理论上应该都支持。

模拟器启动报错

这个 inspector 没有元素的 xpath 属性

啊啊 回复

brew install carthage

没有 xpath 什么套路

真机 deviceName 换成 UDID 项目的 BundleID 填入 app?

想问下,这样用 classname 定位的话,是选择查看出来的元素中那个 type 吗?

谢谢,还有一个问题请问下,那个 app 的地址可以直接放.app 文件还是要其他的东西?

恒温 #42 · 2017年03月08日 Author
cece0417 回复

这个和之前没有区别。可以放.app

新手再次求助一次,请问这样填写可以吗?不知道为何启动了模拟器而不是真机

恒温 #44 · 2017年03月08日 Author
cece0417 回复

你 udid 是怎么拿到的?

恒温 回复

udid 是我的手机插上电脑,在 iTunes 里面拷贝出来的哦

恒温 回复

我上面那个写的是 UDID,不知道是不是大写的问题,我重新写成了小写的 udid,接着跑的话,没有启动模拟器了,但是却有个我看不懂的报错,还辛苦指导一下

cece0417 回复

在么,你 qq 多少

cece0417 回复

要知道你的名字,尴尬了

匿名 #50 · 2017年03月08日

这个工具给的 xpath 是不准的

cece0417 回复

需要对你的真机重新 build 下 webdriverAgent,这个是老错误了。

cece0417 回复

我也出现这个错误,你解决了吗?

啊啊 回复

解决了,你看下 log,找到 wda 的位置,然后重签名,再 build 一下 wdarunner 到你的机器上,再启动 session 就好。这有个帖子
https://testerhome.com/topics/6636

恒温 回复

已经解决了,谢谢。我之前装的是 macaca 的 wda,忘记装 appium 的 wda 了。

cece0417 回复

能加我 qq448529606 帮我看下吗?

下载不下来,求个百度云下载链接

cece0417 回复

Sdk '10.1.1' was not in list of simctl sdks
在真机测试的时候 报的这个错 这是什么问题

恒温 #58 · 2017年03月09日 Author
ansen 回复

你系统是啥版本的?

恒温 回复

OS 10.11 Xcode8.2 IOS10.1.1

恒温 #60 · 2017年03月09日 Author
ansen 回复

Just changing your platformVersion to match your simulator's iOS version should do the trick.

在命令行运行:

xcrun simctl list

恒温 回复

执行完命令后 显示了很多的 Devive 信息 可是这些跟我要测试的真机有什么关系吗 appium1.6.4 链接 IOS10 的真机时 都需要设置哪些参数 你能跟我大概说一下吗 拜托了

同时装了 7.3 跟 8.2 的 xcode,怎么指向 8.2 的 xcode

恒温 #63 · 2017年03月09日 Author
回复

这问题 不能自己解决么。。

恒温 回复

把 73 删了

想问下 start new session 进去后完全没法输入是怎么回事啊,有人遇到吗

cece0417 回复


请问模拟器是写这四个属性么

恒温 #67 · 2017年03月10日 Author
回复

一个个运行,提醒缺哪个就补哪个 我就是这样做的。

浏览器下的慢死,还是迅雷下载的快

真他妈的好用

codeskyblue 回复

我用起来怎么很卡

codeskyblue 回复

确实挺好用的,除了没有 xpath。还少了一些老版本的功能,希望以后加上

xinxjxjxj 回复

卡卡的,但是不影响使用

这么说在 Desktop 启动 用的是 Appium v1.6.4-beta server 不用 NPM DOWN appium 1.6.4 了是吧 ! 太开心啦

恒温 #75 · 2017年03月13日 Author
chen 回复

是的

遇到这种问题:

Unable to launch WebDriverAgent because of xcodebuild failure: xcodebuild failed with code 65

重新在你的真机上编译 WebDriverAgent

已试用,在某些情况可以配合 macaca 的 inspector 使用,比如获取坐标。鉴于这个工具没办法直接得到 xpath,还是优先考虑 macaca 的 inspector。谢谢分享!

重新编译还是会挂掉,醉了

学习了

重新编译还会遇到问题的同学参试下:

  1. 到 webdriverAgent 目录下
  2. 运行 sh ./Scripts/bootstrap.sh
  3. 再使用 xCode build 一次。

最新版 1.0.0-beta4 官网已发布。

恒温 #83 · 2017年03月15日 Author
山姆大叔 回复

给个百度云的下载地址?

恒温 #85 · 2017年03月15日 Author
ansen 回复

国内很多人下不来,所以希望有个百度云的下载

我有个问题,我用的 1.6.3 的 appium 命令行版本,能正确运行(暂时只是打开真机上的 app),但是换到那个 1.6.4 的 beta2 版本时,还是报 error code 65,这个为什么?

恒温 #87 · 2017年03月15日 Author
shishuaigang 回复

换了就要重新编译啊。。

恒温 回复

换 appium 版本也要重新编译吗?因为昨天编译了死活还是报 65 的错误
昨天没看到这个,我再试下

重新编译还会遇到问题的同学参试下:

到 webdriverAgent 目录下
运行 sh ./Scripts/bootstrap.sh
再使用 xCode build 一次。

恒温 回复

没有百度云,直接网页下载的,可以下的

恒温 #90 · 2017年03月15日 Author
shishuaigang 回复

嗯 我就是这样成功的

恒温 回复

我这还是失败,beta 版本的客户端一直显示这个错误,一直说我这个里面没有这个 WebDriverAgentRunner-Runner.app,我看了下,这个文件应该是 build wda 时生成的,我用命令行编写的时候是有这个文件产生的,单用客户端就没有
[Xcode] 2017-03-15 14:37:20.376 xcodebuild[19045:3653972] Error Domain=NSCocoaErrorDomain Code=260 "The file “WebDriverAgentRunner-Runner.app” couldn’t be opened because there is no such file." UserInfo={NSFilePath=/Users/shishuaigang/Library/Developer/Xcode/DerivedData/WebDriverAgent-cvqckynzuuktkogfpkkkgyompmoj/Build/Products/Debug-iphoneos/WebDriverAgentRunner-Runner.app, NSUnderlyingError=0x7f9758a54630 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}

恒温 #92 · 2017年03月15日 Author
shishuaigang 回复

WebDriverAgentRunner-Runner.app 本来就没有啊。。

恒温 #93 · 2017年03月15日 Author
shishuaigang 回复

到 webdriverAgent 目录下
运行 sh ./Scripts/bootstrap.sh
再使用 xCode build 一次。

你有没有用 xcode build 好之后,运行那个 xc 测试?

恒温 回复

需要先命令行下载 appium1.6,再把 appium 的 webdriverAgent build 一下?

恒温 回复

我在作真机测试的时候,每次都会把我安装在真机上的 app 给删除了再重新安装,包括执行 js 的时候也会先删除 app 然后再安装一次。怎么才能避免这种情况,怎么能实现:我提前把 app 安装好,测试的时候直接启动。需要设置什么参数吗

恒温 回复

做了的,卡在 setup 那里,应该没多大事
我觉得我理解你的重新 build 是怎么个重新 build 法了

恒温 #97 · 2017年03月15日 Author
ansen 回复

这个是 appium 的参数里配置的吧 desireCap 里的

恒温 回复

我对这个路径下的进行了 build,发现手机上直接闪退
/Applications/Appium.app/Contents/Resources/app/node_modules/appium-xcuitest-driver/WebDriverAgent
重新 sh ./Scripts/bootstrap.sh 后 build,然后做那个 test,app 在手机上直接闪退

恒温 #99 · 2017年03月15日 Author
shishuaigang 回复

xcode 的日志呢?

恒温 回复

刚查了查 只要设 noReset 为 true app 就不会在重装了 😁
noReset:在当前 session 前不重置 app 状态

恒温 回复

已经搞定了,多谢啦,走了很多弯路,刚刚闪退是因为忘了给 lib 选开发者组了
以前命令行可以,客户端不可以是因为 wda 的路径选择问题
多谢多谢

恒温 #102 · 2017年03月15日 Author
shishuaigang 回复

😎 😎

恒温 回复

😍 😍 😍 😍

ios 真机运行,亲测可用,bundleId 改成自己的 app

我发现一个问题,真机配置 devicename 要是写在前面,会把 wda 给自动删了我去

恒温 #107 · 2017年03月16日 Author
回复

这么神奇?

恒温 回复

是的,我刚刚试验过了

恒温 回复

写在 udid 前面,你试试

110楼 已删除


真机跑不成功

改成大写的,UDID,会启动模拟器,但没有启动真机

114楼 已删除
回复

按照你的排版本,真机不能启动成功啊,求指教

116楼 已删除
纪小莉 回复

要装 appium 的 wda 这是大前提

现在在用,没几秒就闪退了,请问兄台遇过么

119楼 已删除

是不是这个 appium beta 版本不稳定的缘故

这个客户端一下就闪退,不知道为什么,你有没有遇过

122楼 已删除
123楼 已删除

wda 获取到 ip 地址后,通过浏览器打开http://192.168.32.205:8100/status,发现打不开,请问是什么原因呢

纪小莉 回复

不是/inspector 么

纪小莉 回复

你要做的什么?具体描述一下

恒温 回复

问个问题,appium 是不是认为 button 是最小的控件单元了?
但是我们开发还在 button 里写了一堆层次结构,但是 app-inspector 读到 button 后就不往后读了,这个我直接用 xpath 去读到最后一层的控件可行吗

回复


跟据这个,我访问不了我出来的网址
参考网站:https://testerhome.com/topics/7220

纪小莉 回复

我没按照他的来,我是连上真机,然后运行 appium 下的 wda runner 文件。用 test 指令去运行,runner 就会安装到真机上了,然后你去信任他

回复


出现了这个错误,不知道什么原因

回复

然后运行 appium 下的 wda runner 文件。用 test 指令去运行
这个具体是怎么操作的,我也试试啊

纪小莉 回复

xcode 的 product 下的 test 去运行你的 runner

纪小莉 回复

设备上有 wda 了,就是安装成功了

回复


有了,但不知道怎么展开测试,可有教程

Unable to launch WebDriverAgent because of xcodebuild failure: xcodebuild failed with code 65

解决方法:
加入 xcodeOrgId 和 xcodeSigningId 字段

恒温 #137 · 2017年03月18日 Author
fdeferf 回复

这两个分别是啥值呀?

恒温 回复

不好意思,没说清楚
刚刚我跑了下,不需要这两个值也可以
之前参考的这个链接 https://github.com/imurchie/appium-xcuitest-driver/blob/isaac-rs/docs/real-device-config.md
TeamID 在 https://developer.apple.com/account/ 里左侧的 Member ship 中找到

{
     "xcodeOrgId": "<Team ID>",
     "xcodeSigningId": "iPhone Developer"
}
恒温 #139 · 2017年03月19日 Author
fdeferf 回复

学习了。如果指定了这两个,相当于使用新的去重新 build 了吧

恒温 回复

这个·版本的输入跟之前有偏差么

恒温 回复

我把 IOS 配置完后,点击 start session 后,真机的 APP 是打开了,但是定位元素的界面没有打开,而是重新再打开一个 Appium-desktop 应用,你们有遇到过吗?

Wu 回复

截图看看

回复


右下角那里一直重复打开 Appium-desktop 应用

Wu 回复

没遇过,配置看看

回复

配置都是默认的配置,我选的是 Simple 的,其他都没有动,我的是 IOS9.3 + Xcode7.3

Wu 回复

得用 xcode8 以上版本,因为这个版本 appium 底层用的是 xcode8 的 xcunit

回复

好,谢谢,我以为都兼容,我升级一下 Xcode

Wu 回复

两个版本 xcode 可以并存的,具体你查下资料。你要确保你 appium 指向 8 的 xcode 就行

fdeferf 回复

高!实在是高!加这两个参数真的很好使!

山姆大叔 回复

谢谢,我也折腾了好久。好像第一次输入这个参数后,接下来就不需要再填了,你试一下。

fdeferf 回复

果然如此!谢谢!

山姆大叔 回复

别着急,我又听说免费的 Apple ID 帐号签名后 7 天会过期

fdeferf 回复

不用担心,我找公司 iOS 开发要的公司开发账号(付费的),没用免费账号

macaca 的 app-inspector 对付 ios 从来没成功过,在 github 提 issue,最后是没什么下文了,现在连 android 都连不上。😂 😂 😂

@Lihuazhang 怎么不能发帖了? 提示没有权限或者未登录,实际是已经登录了的

@Lihuazhang 说白了 appium desktop 是一个什么工具? 查看 APP 元素与定位的工具 还是与 dmg 一样 还具有录制和执行脚本?

恒温 #157 · 2017年03月23日 Author
center_on 回复

可以理解为一个更加友好的 appium 管理工具吧。 整合了之前的 appium gui 等功能。

恒温 回复

我可以这么认为吗, 就是 Xcode 8 以上 appium 的客户端 不会像 1.63 那样终端执行 ,Xcode 8 以上就可以直接用它了? 或者与之前的 appium 1.53 dmg 有和优缺点

恒温 #159 · 2017年03月23日 Author
center_on 回复

不是。appium 运行在终端也可以。使用 Appium Desktop 也可以。没啥优缺点。一种新方式而已。

恒温 回复

那这篇文章只是简单的介绍安装没有用介绍详细使用,老师您知道之前 appium 1.6.3 终端执行 问题较多有些小白同学很难理解一些错误和调试, Desktop 用的是客户端,简单明了,能整一篇 详细使用篇么, 我也是白菜 没找到录制和如何执行脚本这个功能,网上该资源也比较少😂

恒温 #161 · 2017年03月23日 Author
center_on 回复

标题写了简单使用嘛。。。

恒温 回复

那这东西 有录制和编辑脚本吗? 还是在会话那 输入你的执行 😂 , 我感觉并没有实际上的用途

center_on 回复

跟之前一样可以运行脚本跟查看元素,不过速度不敢恭维,慢的跟蜗牛一样

恒温 回复

😂 运行脚本速度太慢了

回复

右键 inspect element 里有很多工具 但是还是得研究一下 交互较为复杂😂

center_on 回复

如果跟之前 appium 版本一样给出 xpath 就好了

回复

这样的话 元素界面里边没有 Index,那我们怎么去编写 app 里边点击事件的代码呢!Xpath 又是怎么去识别的呢

Zero.0 回复

xpath 可以用 name 这种元素属性去写

回复

appium 现在不是不支持 name 的属性了吗

Zero.0 回复

😂 //a[name=] 这种样式去写 xpath 啊

回复

试过的,但是并不好用, 我在 // 前写的是 " 我在想是不是要改成 ’ ,这个需要改吗

Zero.0 回复

没看懂,name 是不好用,妈的元素点击都无法识别,新版本的定位跟运行都不太行😂

回复

我是拿着 Appium1.5.3 录制的 js,放到这个环境下去执行。js 基本上改了一个整遍,元素全部从 UIA 变成 XCUI 了😂 并且没有 Index,没办法我就根据 inspector 中的元素树状图,去查每个元素的 Index,贼麻烦。

Zero.0 回复

是的,很揪心啊。这个版本不好用,总有一天,你的心上人会身披黑胡椒披萨,脚踩草莓棉花糖,手持油炸大鸡腿找到你,你要等。

Zero.0 回复

1.5.3 可以测 10 以上的 ios 版本么

回复

应该不能 我是研究了很久,因为两个版本的测试框架变了。我觉得这个版本不好用的原因还是因为没有 Xpath,导致编写测试脚本的时候,元素的位置不太好判断。效率大大的降低了

Zero.0 回复

这个版本的工具你运行过脚本么,我感觉速度不是一般的慢啊

回复

只是单纯的几个 app 中的点击操作的话 我觉得还可以 复杂的动作(画线,拖动)我没试

Zero.0 回复

脚本能看下么

回复
"use strict";

var wd = require("wd");
var chai = require("chai");
var chaiAsPromised = require("chai-as-promised");

chai.use(chaiAsPromised);
chai.should();
chaiAsPromised.transferPromiseness = wd.transferPromiseness;


var  desired = {
  "appium-version": "1.0.0-beta.2",
  "platformName": "iOS",
  "automationName": "XCUITest",
  "platformVersion": "10.2.1",
  "deviceName": "iPad Air",
  "app": "appPATH",
  "udid": "自己输入",
  "noReset": true,
  "bundleId": "apple的证书"
};

var browser = wd.promiseChainRemote("127.0.0.1", 4723);
browser.init(desired).then(function() {
    return browser
       .elementByXPath('//XCUIElementTypeApplication[1]/XCUIElementTypeWindow[1]/XCUIElementTypeOther[1]/XCUIElementTypeCollectionView[1]/XCUIElementTypeCell[1]/XCUIElementTypeOther[1]/XCUIElementTypeStaticText[1]')
       .sleep(5000)
       .click()
        .sleep(5000)
        .elementByXPath('//XCUIElementTypeApplication[1]/XCUIElementTypeWindow[1]/XCUIElementTypeOther[1]/XCUIElementTypeOther[2]/XCUIElementTypeOther[1]/XCUIElementTypeOther[2]/XCUIElementTypeButton[1]')
        .sleep(5000)
        .click()
        .sleep(5000)
        .elementByXPath('//XCUIElementTypeApplication[1]/XCUIElementTypeWindow[1]/XCUIElementTypeOther[1]/XCUIElementTypeOther[1]/XCUIElementTypeOther[1]/XCUIElementTypeOther[1]/XCUIElementTypeButton[1]')
        .sleep(5000)
        .click()
        .sleep(5000)
        .elementByXPath('//XCUIElementTypeApplication[1]/XCUIElementTypeWindow[1]/XCUIElementTypeOther[2]/XCUIElementTypeOther[3]/XCUIElementTypeOther[2]/XCUIElementTypeTable[1]/XCUIElementTypeCell[1]/XCUIElementTypeStaticText[1]')
        .sleep(5000)
        .click()
        .sleep(5000)
        .elementByXPath('//XCUIElementTypeApplication[1]/XCUIElementTypeWindow[1]/XCUIElementTypeOther[1]/XCUIElementTypeOther[1]/XCUIElementTypeOther[1]/XCUIElementTypeOther[1]/XCUIElementTypeButton[4]')
        .sleep(5000)
        .click()
        .sleep(5000)
        .elementByXPath('//XCUIElementTypeApplication[1]/XCUIElementTypeWindow[1]/XCUIElementTypeOther[1]/XCUIElementTypeOther[1]/XCUIElementTypeOther[1]/XCUIElementTypeOther[1]/XCUIElementTypeButton[4]')
        .sleep(5000)
        .click()
        .sleep(5000)
        .elementByXPath('//XCUIElementTypeApplication[1]/XCUIElementTypeWindow[1]/XCUIElementTypeOther[2]/XCUIElementTypeOther[3]/XCUIElementTypeOther[2]/XCUIElementTypeOther[1]/XCUIElementTypeTable[1]/XCUIElementTypeCell[1]/XCUIElementTypeStaticText[1]')
        .sleep(5000)
        .click()
       //.elementByXPath('//XCUIElementTypeApplication[1]/XCUIElementTypeWindow[1]/XCUIElementTypeOther[1]/XCUIElementTypeOther[1]/XCUIElementTypeSegmentedControl[1]/XCUIElementTypeButton[2]')
       //.click()
       .sleep(5000)
        .fin(function() {
            return browser.quit();
        });
}).done();

回复

"app" "udid" "bundleId"是自己的 我这边不方便给你展示

Zero.0 回复

你这 xpath 写的要累死啊。。。我主要看你的 xpath

回复

暂时没想起来好的方法,先用笨办法试试能不能进行 app 的自动化测试。之后再去考虑更加简便的方法!😀

Zero.0 回复

想到了可以分享一下,不过你这等待时间太长了

回复

是啊😂 这个执行起来太费劲了,如果之后万一 app 作修改了,js 维护起来也特别的费劲,整不好还要重新编译。

Zero.0 回复

不利于自动化,这个版本,我之前版本 appium 还能跑跑出个报告。这个版本的速度实在太慢了

回复

我之前用的是 Xcode7.3 的 instruments 中的 AUtomation,那个相对来说要快捷一些,但是那个没法查看元素,只能利用坐标去定位,之后 IOS 升级到 10 之后 Xcode8 删除了 AUtomation,然后就尝试 appium1.5.3,没想到支持 IOS10 以上版本的,要升级到 1.6.0—+Xcode8 以上,但是 appium-desktop 之前都没有 GUI 界面,还好现在这个版本不管怎么麻烦吧,至少有个解决方法了。等以后有更快捷的方法时候再分享吧。

Zero.0 回复

是的,这个版本速度太慢了

试了,不行,依然报 code65 的错

[MJSONWP] Encountered internal error running command: Error: Unable to launch WebDriverAgent because of xcodebuild failure: xcodebuild failed with code 65
at XCUITestDriver.quitAndUninstall$ (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-xcuitest-driver/lib/driver.js:368:15)
at tryCatch (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-xcuitest-driver/node_modules/babel-runtime/regenerator/runtime.js:67:40)
at GeneratorFunctionPrototype.invoke as _invoke
at GeneratorFunctionPrototype.prototype.(anonymous function) as next
at GeneratorFunctionPrototype.invoke (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-xcuitest-driver/node_modules/babel-runtime/regenerator/runtime.js:136:37)
at process._tickCallback (internal/process/next_tick.js:103:7)
[HTTP] <-- POST /wd/hub/session 500 39859 ms - 230 这是报错信息

congcong 回复

应该是 WebDriverAgent 签名的问题,后来重新安装了 Appium 1.6.3,重新签名编译 WebDriverAgent,就好了,或者可以参考https://testerhome.com/topics/6636

恒温 回复

感觉 desktop 集成的 appium 1.6.4beta 版本有问题,用 desktop,tap 有问题,换用 cli 1.6.4beta 版本就没问题

回复

你有用 macaca 跑 ios 吗 我今天费了好大劲,搞好了,不过发现 太慢了 findelement 再 click 一下要 9 秒多?

云霄 回复

没,我用 appium

云霄 回复

macaca 也这么慢,那 ios 自动化没必要跑了,一个 case 跑个半天,还不如点点点

回复

macaca 模拟器器 跑官方的例子不算太慢 查找点击下 2 秒多

回复

我再试试 跑真机 和 模拟器 的速度对比

云霄 回复

ok

回复

测试了一下 macaca 模拟器 和真机的 findelement + click 的速度 ,全部通过 name 查找。
模拟器比真机快很多,分别点击 4 个 button ,分别耗时为 1.5 秒 5 秒 2 秒 2 秒

但是奇怪的是 以第一个 1.5 秒为例 模拟器上 findelement 只需要 0.5 秒 ,click 要 1 秒
真机分别为 9.5 秒 40 秒 12 秒 12 秒 ,真机上 find 和 click 时间基本对半

云霄 回复

能不能 By.name 这个方式来查找元素

201楼 已删除
恒温 #202 · 2017年04月11日 Author

那就自己想办法解决呗。

恒温 回复

搞不明白, 更完 ios10.3 好想就这样了 ,一运行 desktop 我的 WebDriverAgent 就会崩掉

204楼 已删除

不能 github 上查查么。。把工程里三个 target version 相关的地方都改成 10.3 wda 就不会报错了

songz 回复

是你脑子 (想的) 那么简单 就好了,自己已经解决了啊 是修改 WebDriverAgent 文件

center_on 回复

我是根据你贴的 log 回复的,没必要嘲讽我把?

恒温 #208 · 2017年04月11日 Author
center_on 回复

解决就好了。

songz 回复

说点题外的哈,兄弟按照新闻上的描述,你就属于那种吃瓜群众 ,没啥事瞎卖呆,说的话就跟你吃的瓜皮一样扔地下会摔到人,没啥用的话,别管我问老师啥问题,我这想得到个解决办法,而不是你这瞎嘚嘚,逛社区跟新闻抢沙发是的,哪都有你😊,话有点过,句句在理

恒温 回复

还是报错 code 65。按照你给的重新 build 了 wda,成功了。但是 UITestingUITest 中的测试用例运行失败?请教~

congcong 回复

请问你是怎么解决的呢?

恒温 #212 · 2017年04月11日 Author
xiao 回复

我只遇到 build 65 的问题。其他没有遇到过。 大家在做的时候 对 xcode build 项目还是要熟悉一点。

center_on 回复

😳 不常看社区,也只是想回答你那个问题。也许我是没看清你的问题,但也请控制好自己的情绪。也可以 share 下你的解决方案学习下😁

恒温 #214 · 2017年04月11日 Author
songz 回复

都消消气 @visionary 大家都是比较有爱的。

songz 回复

哈哈 songz 苦逼,难得回答个问题被嘲讽

UITestingUITest 中的测试用例运行失败
加上-Wno-partial-availability

恒温 回复

谢谢!问题刚刚解决了。是 wda 的问题。只有 lib 构建成功,runner 没有成功,因为 bundleid 的问题。后改了运行成功了。之后运行 UITestingUITest 成功。而且在手机上安装了一个 webDriver*** 的 app。

218楼 已删除

log:
File "paperang_python.py", line 17, in
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
File "/usr/local/lib/python2.7/site-packages/selenium-3.3.3-py2.7.egg/selenium/webdriver/remote/webdriver.py", line 98, in init
self.start_session(desired_capabilities, browser_profile)
File "/usr/local/lib/python2.7/site-packages/selenium-3.3.3-py2.7.egg/selenium/webdriver/remote/webdriver.py", line 185, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/usr/local/lib/python2.7/site-packages/selenium-3.3.3-py2.7.egg/selenium/webdriver/remote/webdriver.py", line 249, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python2.7/site-packages/selenium-3.3.3-py2.7.egg/selenium/webdriver/remote/errorhandler.py", line 193, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: A new session could not be created. Details: Appium's IosDriver does not support xcode version 8.3.1. Apple has deprecated UIAutomation. Use the "XCUITest" automationName capability instead.

用例:
from selenium import webdriver
from selenium.webdriver.firefox.webdriver import WebDriver
PATH = lambda p: os.path.abspath(
os.path.join(os.path.dirname(file), p)
)
desired_caps = {}
desired_caps
desired_caps['platformName']='iOS'
desired_caps['deviceName']='iPhone 6'
desired_caps['device'] = 'iOS'
desired_caps['bundleId'] = '故意不填’
desired_caps['version'] = '10.3'
desired_caps['app-package'] = '故意不填'
desired_caps['udid']='故意不填'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

el = driver.find_element_by_name("搜索")
el.click()
driver.quit()

A new session could not be created. Details: Appium's IosDriver does not support xcode version 8.3.1. Apple has deprecated UIAutomation. Use the "XCUITest" automationName capability instead.
这个怎么解决呀

A new session could not be created. Details: Appium's IosDriver does not support xcode version 8.3.1. Apple has deprecated UIAutomation. Use the "XCUITest" automationName capability instead.
何解?我必须回退到 xcode8?

恒温 #221 · 2017年04月21日 Author
nobody 回复

把英文翻译一遍

恒温 回复

用 "XCUITest" automationName 这个怎么用呢?不用 appium desktop 吗?
弄了两天了,因为没搞过自动化测试,把网上的各种文档都看了,感觉环境装好了。但是连你们说的 inseptor 都跑成功过😭 😭 😭

An unknown server-side error occurred while processing the command. Original error: Could not determine iOS SDK version: Command 'xcrun --sdk iphonesimulator --show-sdk-version' exited with code 1: xcrun: error: SDK "iphonesimulator" cannot be located xcrun: error: SDK "iphonesimulator" cannot be located xcrun: error: unable to lookup item 'SDKVersion' in SDK 'iphonesimulator'
这个报错怎么解决啊?

恒温 #224 · 2017年04月21日 Author
nobody 回复

先找个教程入门吧。

恒温 回复

看了很多啊,但是基本都过时了啊。

纪小莉 回复

你的问题解决了吗?我也遇到了~Use the "XCUITest" automationName capability instead

nobody 回复

automationName=XCUITest

fdeferf 回复

谢谢,解决了这个问题。但是 unable to lookup item 'SDKVersion' in SDK 'iphonesimulator',这个又是什么鬼啊~我按照你们说的填一直爆这个错误

nobody 回复

你没有指定测试的系统版本把

fdeferf 回复

我直接用的真机测试的,信息我都核对过了。

nobody 回复

bundleId 错了把 , Xcode 有吗? 使用 Xcode 运行过 App 吗

fdeferf 回复

我故意写错的~运行过,因为我就是写 iOS 的.我换了模拟器弄,还是不得行。😭
{
"platformName": "iOS",
"deviceName": "iPhone Simulator",
"bundleId": "com.xx.DuoJiWu",
"automationName": "XCUITest",
"platformVersion": "10.3"
}
流程是不是先用 wda test 一个 app 在模拟器上,然后在 appium 里面进行启动监听服务,最后再去写脚本传给 appium,appium 通过 bootstrap.js 下发给 app 呢?(我在各种文章中看到的,我是不是走偏了)

nobody 回复

先打开 Appium, 执行脚本时 Appium 会替咱们提前运行 WebDriverAgent, 你这个错误我没遇到过, 你 Google 一下

fdeferf 回复

重启电脑解决了~😂

纪小莉 回复

我也遇到了,"udid"保持小写,他对应的内容改为小写,比如 udid=123ABC 改为 udid=123abc 就好了。我是这样解决的


又遇到新问题了,汗,求解

fdeferf 回复

大神,Team ID 是不是只有开发者账号才有,普通的 AppleID 账号有这个吗?

ls 回复

普通的没有,需要手动的进行签名

fdeferf 回复

好的,感谢

这种问题有遇到的吗?我通过 xcode build,test 都成功了,真机上也有 webdriveragentrunner 了,可是运行 appium desktop 总是报这个错误。

恒温 回复

老师,之前用 appium 1.5.3 报 Parameters were incorrect
后来换成 appium desktop(1.6.4),还是报这个参数错误
WebDriverException: Message: Parameters were incorrect. We wanted {"required":["value"]} and you sent ["text","sessionId","id","value"]
这是为什么?

跟我同时用 npm 安装了 appium 1.6.4 有关系么?
期待老师解答

注:我用命令行启动 appium 服务, 是可以正常执行脚本的(sample-code-master)

jy503160 回复

已解决,selenium 版本的坑,退回到 3.0.1 即可

@Lihuazhang 您好,请问一下 我的 Xcode 版本是 8.3.2 运行 appium-desktop 的时候报错 error:enotfound。之前 Xcode 版本是 8.1 的时候是能启动成功的啊。麻烦帮忙看一下,网上也没查到问题原因

恒温 #247 · 2017年05月17日 Author
yefengjun 回复

你看看 是不是自己的端口被占用了啊

恒温 回复

应该没有被占用 我换过端口了 还是这样。。。


有哪位大神知道这个 xcode 编译 wda 时到错误是怎么回事吗?
找到问题原因了, 这个解决了可以安装到真机,又出现不断重启的问题了,真是一个坑接一个坑啊,😟 😂 😂

解决办法: 找到 WebDriverAgent/Configurations/ProjectSettings.xcconfig 文件,后面加上-Wno-partial-availability 就可以了,重新 build

这个怎么解得

小鱼 回复

用你这个方法,也不知为什么,第一次还是有问题,我又重装了一下,第二次就可以了,非常感谢

ansen 回复

朋友你 57 楼的那个错误解决了吗?

/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Applications/PyCharm.app/Contents/helpers/pycharm/_jb_unittest_runner.py --path /Users/shixin/zuobiao/zuobiaoCase/LoginModel.py
Testing started at 上午 10:29 ...
Launching unittests with arguments python -m unittest /Users/shixin/zuobiao/zuobiaoCase/LoginModel.py in /Users/shixin/zuobiao/zuobiaoCase

Ran 0 tests in 0.042s

FAILED (errors=1)

Failure
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/unittest/suite.py", line 163, in handleClassSetUp
setUpClass()
File "/Users/shixin/zuobiao/zuobiaoCase/LoginModel.py", line 12, in setUpClass
cls.driver=GetAppiumDriver().driver
File "/Users/shixin/zuobiao/Utills/Common.py", line 7, in singleton
instances[cls] = cls(args,*kw)
File "/Users/shixin/zuobiao/Utills/GetAppiumDriver.py", line 16, in __init

self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub,desired_caps")
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/appium/webdriver/webdriver.py", line 36, in init
super(WebDriver, self).init(command_executor, desired_capabilities, browser_profile, proxy, keep_alive)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 98, in init
self.start_session(desired_capabilities, browser_profile)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 188, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in execute
self.error_handler.check_response(response)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 165, in check_response
raise exception_class(value)
selenium.common.exceptions.WebDriverException: Message: Parameters were incorrect. We wanted {"required":["desiredCapabilities"],"optional":["requiredCapabilities","sessionId","id"]} and you sent ["desiredCapabilities","capabilities"]

Stdout:

Process finished with exit code 1
appium 1.5.2 Mac10.12.4 jdk1.7
appium-doctor

代码在 win10 上跑的同,在 mac'上总是提示 selenium.common.exceptions.WebDriverException: Message: Parameters were incorrect. We wanted {"required":["desiredCapabilities"],"optional":["requiredCapabilities","sessionId","id"]} and you sent ["desiredCapabilities","capabilities"]
困扰几天了,自己没找到问题的原因

ansen 回复

您好,打扰了,我也遇到了相同的问题 “ Original error: Sdk '10.2.1' was not in list of simctl sdks ”,想请教您是怎么解决的?感谢

挺好的,按照方法完美解决😀

小鱼 回复

platformVersion 使用 10.2

ansen 回复

desired_caps['platformVersion'] = '10.1'

cece0417 回复

是还不支持 xcode8 吗
我这边报错 Appium's IosDriver does not support xcode version 8.3.2

shishuaigang 回复

/Applications/Appium 2.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
/Applications/文件怎么进去的,sh ./Scripts/bootstrap.sh 这没机会用

回复

打开终端 (mac),cd /Applications 就进去了呀

yefengjun 回复

你的问题解决了吗?

石小朵 回复

本地 *** 了就好了..你可以百度下 google hosts 然后再试试。


有谁遇到过这个问题的么??

恒温 回复

appium 连接真机后没有 Xpath 定位是怎么回事?

请问下,装 WebDriverAgent 时提示输入 keychain,这个 keychain 密码是什么?

我查找了很多情况,都试过了还是不行;重装了系统, 试过多个版本,依旧出现这个问题。(win10)。 有人能知道解决情况吗?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册