ATX ATX 文档 - iOS 真机如何安装 WebDriverAgent

codeskyblue · 2017年01月23日 · 最后由 长颈鹿 回复于 2021年11月16日 · 61371 次阅读

最早知道 WebDriverAgent 还是通过社区里的一篇文章 WebDriverAgent 简介(PS:社区真是伟大,什么都有)
通过这篇文章希望能让初次接触 WDA 的你,少走一些弯路。

WDA 在 Github 的首页上有一个很简单的安装说明 https://github.com/appium/WebDriverAgent,参考这个,我再增加一些配图,以及自己使用过程中的一些体会。

开始

尽量升级 Xcode 到最新版,保持 iPhone 的版本大于 9.3

从 github 上下载代码

git clone https://github.com/appium/WebDriverAgent

运行初始化脚本

./Scripts/bootstrap.sh

该脚本会使用Carthage下载所有的依赖,使用 npm 打包响应的 js 文件

执行完成后,直接双击打开WebDriverAgent.xcodeproj这个文件。

设置证书

因为安装到真机上都是需要证书签名的,用免费的证书我没有搞定,最后用的还是 99 美元的开发者证书

画圈的地方,从左向右依次点击。最后 Team 那一栏,选择你买到的开发者证书帐号。(个人证书也可以)

接着在 TARGETS 里面选中 WebDriverAgentRunner,用同样的方法设置好证书

如果是免费版的个人证书,还需要修改下 WebDriverAgent 的 BundleID,随便加点后缀,只要不跟其他人的重名就好(这里参考了 macaca 的一篇文章 https://testerhome.com/topics/8085

运行与测试

菜单栏选择目标设备

Scheme 选择 WebDriverAgentRunner

最后运行 Product -> Test

一切正常的话,手机上会出现一个无图标的 WebDriverAgent 应用,启动之后,马上又返回到桌面。这是很正常的不要奇怪。

此时控制台界面可以看到设备的 IP。如果看不到的话,使用这种方法打开

常见问题

问题 1:

解决方法:
遇到这个问题,说明手机上已经有一个 WebDriverAgent 的应用了,只是 BundleID 不一致,需要先将手机上的卸载掉,重新运行 Product -> Test

问题 2:

解决方法:
提示其实已经说了,进入 设置 通用 设备管理 开发者应用 然后点击信任,之后再重新运行一遍 Product -> Test

端口转发

有些国产的 iPhone 机器通过手机的 IP 和端口还不能访问,此时需要将手机的端口转发到 Mac 上。

# 使用--HEAD安装最新版本
$ brew install libimobiledevice --HEAD
$ iproxy 8100 8100

使用iproxy --help 可以查到更具体的用法。 这时通过访问http://localhost:8100/status确认 WDA 是否运行成功。

而 inspector 的地址是http://localhost:8100/inspector, inspector 是用来查看 UI 的图层,方便写测试脚本用的

使用终端替代 Xcode

通常来说为了持续集成,能够全部自动化比较好一些

# 解锁keychain,以便可以正常的签名应用,
PASSWORD="replace-with-your-password"
security unlock-keychain -p $PASSWORD ~/Library/Keychains/login.keychain

# 获取设备的UDID
UDID=$(idevice_id -l | head -n1)

# 运行测试
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination "id=$UDID" test

其他问题

论坛里有帖子说要修改 BundleID,我试了试,就算不改也挺正常的。
还有一些奇怪的问题,比如

执行./Scripts/bootstrap.sh 提示 KeyError: 'devices'

这个应该是脚本有问题,解决方式就是删掉点代码

function fetch_and_build_dependencies() {
  echo -e "${BOLD}Fetching dependencies"
  assert_has_carthage
  if ! cmp -s Cartfile.resolved Carthage/Cartfile.resolved; then
    runtimes_with_devices=`xcrun simctl list -j devices | python -c "import sys,json;print(' '.join(map(lambda x: x[0], filter(lambda x: len([y for y in x[1] if y.get('availability') == '(available)' or y.get('isAvailable')]) > 0, json.load(sys.stdin)['devices'].items()))))"`
    platforms=(iOS)
    if echo "$runtimes_with_devices" | grep -q tvOS; then
      platforms+=(tvOS)
    else
      echo "tvOS platform will not be included into Carthage bootstrap, because no Simulator devices have been created for it"
    fi
    platform_str=$(join_by , "${platforms[@]}")
    carthage bootstrap $USE_SSH --platform "$platform_str" $NO_USE_BINARIES
    cp Cartfile.resolved Carthage
  else
    echo "Dependencies up-to-date"
  fi
}

改成

function fetch_and_build_dependencies() {
  echo -e "${BOLD}Fetching dependencies"
  assert_has_carthage
  if ! cmp -s Cartfile.resolved Carthage/Cartfile.resolved; then
    platforms=(iOS)
    platform_str=$(join_by , "${platforms[@]}")
    carthage bootstrap $USE_SSH --platform "$platform_str" $NO_USE_BINARIES
    cp Cartfile.resolved Carthage
  else
    echo "Dependencies up-to-date"
  fi
}

其他中的其他

  1. Failed to authorize rights (0x1) with status: -60007
  2. The bundle “WebDriverAgentRunner” couldn’t be loaded because it is damaged or missing necessary resources

在这个官网 Wiki 里面可以找到解决办法 https://github.com/facebook/WebDriverAgent/wiki/Common-Issues

如果汗流浃背,弄了很久还是没搞定。尝试下这些步骤

  1. git pull更新 WebDriverAgent 的代码
  2. 卸载手机上的 WebDriverAgent
  3. 更新 Xcode
  4. 更新 Mac 系统
  5. 重启 Mac

结尾

最后附上基于 Python 自动化框架地址

Xcode 问题多多,愿 WDA 与你同在。

附言 1  ·  2019年05月28日

运行 xcodebuild 遇到下面这个错误

xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

执行 sudo xcode-select -s /Applications/Xcode.app/Contents/Developer 就可以修复。See also: https://github.com/nodejs/node-gyp/issues/569

附言 2  ·  2019年05月20日

近段时间发现 facebook/WebDriverAgent 已经 archived 了(也就是不维护了),目前推荐用 appium 的 fork 版

附言 3  ·  2019年03月12日

最近安装 libimobiledevice 似乎不好使了,看网上说可以用下面的命令

brew update
brew uninstall --ignore-dependencies libimobiledevice
brew uninstall --ignore-dependencies usbmuxd
brew install --HEAD usbmuxd
brew unlink usbmuxd
brew link usbmuxd
brew install --HEAD libimobiledevice
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 102 条回复 时间 点赞
sunapple iOS 自动化之 WDA(WebDriverAgent)安装 中提及了此贴 09月07日 15:45
fishfish-yu 专栏文章:使用 Airtest 对 iOS 进行自动化的常见问题答疑 中提及了此贴 12月07日 21:37

build WDA 的时候提示 Command CodeSign failed with a nonzero exit code
改了 Bundle Id 依然不行,请问是什么原因呢

在 Windows 上有没有办法 build 和 test WDA?

fishfish-yu 专栏文章:Airtest 重磅更新,对 iOS 的支持全面升级优化啦! 中提及了此贴 02月08日 16:48
cmlanche 专栏文章:理解和使用 WebDriverAgent 中提及了此贴 12月07日 17:02

不出 ip 怎么办?
2020-09-05 12:52:29.109669+0800 WebDriverAgentRunner-Runner[2775:170933] Running tests...
Test Suite 'All tests' started at 2020-09-05 12:52:31.888
Test Suite 'WebDriverAgentRunner.xctest' started at 2020-09-05 12:52:31.889
Test Suite 'UITestingUITests' started at 2020-09-05 12:52:31.889
Test Case '-[UITestingUITests testRunner]' started.
t = 0.00s Start Test at 2020-09-05 12:52:31.895
t = 0.00s Set Up
2020-09-05 12:52:31.896044+0800 WebDriverAgentRunner-Runner[2775:170933] -[UITestingUITests internalImplementation]: unrecognized selector sent to instance 0x281278f00
t = 0.04s Assertion Failure: :0: failed: caught "NSInvalidArgumentException", "-[UITestingUITests internalImplementation]: unrecognized selector sent to instance 0x281278f00"
(
0 CoreFoundation 0x0000000181f465c0 472E7FDE-A97B-3175-B6EA-87A1B78AEA02 + 1185216
1 libobjc.A.dylib 0x0000000195f5042c objc_exception_throw + 60
2 CoreFoundation 0x0000000181e50a2c 472E7FDE-A97B-3175-B6EA-87A1B78AEA02 + 178732
3 CoreFoundation 0x0000000181f49130 472E7FDE-A97B-3175-B6EA-87A1B78AEA02 + 1196336
4 CoreFoundation 0x0000000181f4b420 _CF_forwarding_prep_0 + 96
5 WebDriverAgentLib 0x000000010924dea4 -[FBFailureProofTestCase setUp] + 136
6 XCTest 0x000000010528d1ac __48-[XCTestCase _performSetUpSequenceWithSelector:]_block_invoke_2 + 516
7 XCTest 0x00000001052e4958 +[XCTestCase(Failures) performFailableBlock:testCase:testCaseRun:shouldInterruptTest:] + 92
8 XCTest 0x00000001052e4854 -[XCTestCase(Failures) _performTurningExceptionsIntoFailuresInterruptAfterHandling:block:] + 136
9 XCTest 0x000000010528cf88 __48-[XCTestCase _performSetUpSequenceWithSelector:]_block_invoke + 132
10 XCTest 0x00000001052f6e64 -[XCTContext _runActivityNamed:type:block:] + 256
11 XCTest 0x0000000105295c0c -[XCTestCase startActivityWithTitle:type:block:] + 204
12 XCTest 0x0000000105295dc4 -[XCTestCase startActivityWithTitle:block:] + 76
13 XCTest 0x000000010528cef4 -[XCTestCase _performSetUpSequenceWithSelector:] + 124
14 XCTest 0x000000010528b18c -[XCTestCase invokeTest] + 732
15 XCTest 0x000000010528cda0 __26-[XCTestCase performTest:]_block_invoke_2 + 48
16 XCTest 0x00000001052e4958 +[XCTestCase(Failures) performFailableBlock:testCase:testCaseRun:shouldInterruptTest:] + 92
17 XCTest 0x00000001052e4854 -[XCTestCase(Failures) _performTurningExceptionsIntoFailuresInterruptAfterHandling:block:] + 136
18 XCTest 0x000000010528ccd4 __26-[XCTestCase performTest:]_block_invoke.370 + 112
19 XCTest 0x00000001052f75a0 +[XCTContext runInContextForTestCase:block:] + 220
20 XCTest 0x000000010528c59c -[XCTestCase performTest:] + 580
21 XCTest 0x00000001052d18e8 -[XCTest runTest] + 64
22 XCTest 0x0000000105286870 __27-[XCTestSuite performTest:]_block_invoke + 272
23 XCTest 0x00000001052860d4 __59-[XCTestSuite _performProtectedSectionForTest:testSection:]_block_invoke + 48
24 XCTest 0x00000001052f75a0 +[XCTContext runInContextForTestCase:block:] + 220
25 XCTest 0x0000000105286070 -[XCTestSuite _performProtectedSectionForTest:testSection:] + 172
26 XCTest 0x00000001052863e8 -[XCTestSuite performTest:] + 336
27 XCTest 0x00000001052d18e8 -[XCTest runTest] + 64
28 XCTest 0x0000000105286870 __27-[XCTestSuite performTest:]_block_invoke + 272
29 XCTest 0x00000001052860d4 __59-[XCTestSuite _performProtectedSectionForTest:testSection:]_block_invoke + 48
30 XCTest 0x00000001052f75a0 +[XCTContext runInContextForTestCase:block:] + 220
31 XCTest 0x0000000105286070 -[XCTestSuite _performProtectedSectionForTest:testSection:] + 172
32 XCTest 0x00000001052863e8 -[XCTestSuite performTest:] + 336
33 XCTest 0x00000001052d18e8 -[XCTest runTest] + 64
34 XCTest 0x0000000105286870 __27-[XCTestSuite performTest:]_block_invoke + 272
35 XCTest 0x00000001052860d4 __59-[XCTestSuite _performProtectedSectionForTest:testSection:]_block_invoke + 48
36 XCTest 0x00000001052f75a0 +[XCTContext runInContextForTestCase:block:] + 220
37 XCTest 0x0000000105286070 -[XCTestSuite _performProtectedSectionForTest:testSection:] + 172
38 XCTest 0x00000001052863e8 -[XCTestSuite performTest:] + 336
39 XCTest 0x00000001052d18e8 -[XCTest runTest] + 64
40 XCTest 0x0000000105309fa0 __44-[XCTTestRunSession runTestsAndReturnError:]_block_invoke + 180
41 XCTest 0x000000010530a0ac __44-[XCTTestRunSession runTestsAndReturnError:]_block_invoke.100 + 116
42 XCTest 0x00000001052a1038 -[XCTestObservationCenter _observeTestExecutionForBlock:] + 596
43 XCTest 0x0000000105309d28 -[XCTTestRunSession runTestsAndReturnError:] + 620
44 XCTest 0x000000010526a3f0 -[XCTestDriver runTestsAndReturnError:] + 444
45 XCTest 0x00000001052f33a0 _XCTestMain + 2400
46 WebDriverAgentRunner-Runner 0x0000000104eff818 -[_XCTRunnerAppDelegate applicationWillResignActive:] + 0
47 WebDriverAgentRunner-Runner 0x0000000104eff720 _XCTRunnerRunTests + 0
48 CoreFoundation 0x0000000181ec3564 472E7FDE-A97B-3175-B6EA-87A1B78AEA02 + 648548
49 CoreFoundation 0x0000000181ec27b8 472E7FDE-A97B-3175-B6EA-87A1B78AEA02 + 645048
50 CoreFoundation 0x0000000181ebcd34 472E7FDE-A97B-3175-B6EA-87A1B78AEA02 + 621876
51 CoreFoundation 0x0000000181ebc4bc CFRunLoopRunSpecific + 600
52 GraphicsServices 0x00000001988c2820 GSEventRunModal + 164
53 UIKitCore 0x00000001848608e0 CDE437AC-60AE-387A-95A4-24CB0671F41F + 12048608
54 UIKitCore 0x0000000184865fbc UIApplicationMain + 168
55 WebDriverAgentRunner-Runner 0x0000000104eff9e4 main + 192
56 libdyld.dylib 0x0000000181b83e60 0F500965-DBFB-3D2F-A47E-E9ECD430D3DD + 3680
)
t = 0.04s Tear Down
Test Case '-[UITestingUITests testRunner]' failed (0.037 seconds).
Test Suite 'UITestingUITests' failed at 2020-09-05 12:52:31.931.
Executed 1 test, with 1 failure (1 unexpected) in 0.037 (0.042) seconds
Test Suite 'WebDriverAgentRunner.xctest' failed at 2020-09-05 12:52:31.932.
Executed 1 test, with 1 failure (1 unexpected) in 0.037 (0.043) seconds
Test Suite 'WebDriverAgentLib.framework' started at 2020-09-05 12:52:31.932
Test Suite 'WebDriverAgentLib.framework' passed at 2020-09-05 12:52:31.932.
Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.000) seconds
Test Suite 'All tests' failed at 2020-09-05 12:52:31.932.
Executed 1 test, with 1 failure (1 unexpected) in 0.037 (0.044) seconds

Du Zhengchao 回复

Error connecting to device! 这个错误你解决了吗?是需要更换数据线还是苹果系统的原因呢

jt.huang 回复

同求,我也遇到同样的问题

让雨停下 回复

同问,也遇到了

OTGG · #115 · 2019年12月08日
仅楼主可见
114楼 已删除
vic 回复

请问这个问题解决了吗?

simple 回复

请问你解决这个问题了吗?

wenqiang1990 回复

你好,这个问题解决了吗?我也碰到了这个问题

xcodebuild failed with code 65
求助,Xcode 里显示 build success 但是 尝试走一个 test case 就变成这样子了。。。。

codeskyblue 回复

试过运行一个 test case 还是不行,xcode 没设置好。
会报错这样一个错误

如果成功的话 会显示这样:

Pac 回复

你这个貌似看起来已经能用了的样子

我到最后一步 运行 然后真机已经加载了一个没图标的 webDriverAgent,但是一直打不开 然后就报错:assertMacros.....
等了超级久还一直报相同的错误

求大神指点迷津,安装了一个多礼拜,断断续续 过五关斩六将的 最后一步还是有问题

chen.zhou 回复

大哥,我现在也遇到这个问题,请问你解决了吗?

😂 还是不行,下载到 WebDriverAgent 文件夹,初始化脚本,最后的代码是{
"value" : "Invalid parameter not satisfying: path\n\n(\n\t0 CoreFoundation ,很长一段,看来只好下载 fackbook 的 appium😂

匿名 #104 · 2019年08月13日
452653952 回复

git clone https://github.com/appium/WebDriverAgent
git reset --hard 1eb3280d89e3510845efb5d1f398001313c2615b
能回退到 appium 带 inspector 版本,我其实是直接用之前装的 appium 看了。。

666,appium 分支的 inspector 可以分享下,折腾了半天,原来·······

匿名 #102 · 2019年08月13日
452653952 回复

git clone https://github.com/facebook/WebDriverAgent

后面多了 inspector,不过今天亲测这个 inspector 不好用,用回 appium 的 inspector 了

你的地址不行了,麻烦更新下哦

匿名 #100 · 2019年08月12日
lynnlrxu 回复

git clone https://github.com/appium/WebDriverAgent
appium 两个月前去掉了 inspector,如果是从 appium 这个分支下载的,inspector 当然没有😂
如果成功运行完./Scripts/bootstrap.sh 在当前目录没有找到 Inspector 这个目录,十有八九是这个问题。。
改用这个 git clone https://github.com/facebook/WebDriverAgentinspector,我这里改后解决了 unhandled endpoint😂

jt.huang 回复

我也是遇到跟你一样的问题,请问解决了吗?

WDA test 可以在 xcode 里面跑起来,但是 python3 main.py -s $SERVER_URL 了以后就不行了,开始设备离线,然后就没有了,是怎么回事呢

{
"value" : "Unhandled endpoint: \/inspector -- http:\/\/localhost:8100\/ with parameters {\n wildcards = (\n inspector\n );\n}",
"sessionId" : "AAAA4EF9-D317-4EEE-AB08-3C7AEDD84948",
"status" : 1
}

http://localhost:8100/statushttp://localhost:8100/source 正常,
但是访问 http://localhost:8100/inspector 的显示内容和访问 http://localhost:8100 的内容差不多,并没有出现 inspector 的界面

我也是
使用 “http://localhost:8100/staus” 和 “http://localhost:8100/source” 都有数据返回,并且返回的内容都是对的,但是在浏览器里打开 “http://localhost:8100/inspector” ,页面显示空白,没有任何信息


请问有大神和我情况一样吗?求解

请问 iproxy 总是连接手机失败是怎么回事呢?

songz 回复

soga

huan 回复

前段时间 apple 的 bug,导致一部分证书失效了。现在已经修复了

免费证书还能用呀

楼主你好,我发现这两天 webDriverAgent 突然不能用免费证书了,楼主是否有遇到呢?

山姆大叔 IOS 配置 WebDriverAgent 出现问题 中提及了此贴 03月13日 17:37
wolfgao 移动客户端 /UI 开源测试框架梳理和大比拼 中提及了此贴 02月27日 21:03

多谢楼主,搞定!

{
"value" : {
"state" : "success",
"os" : {
"name" : "iPhone OS",
"version" : "9.2.1",
"sdkVersion" : "11.2"
},
"ios" : {
"simulatorVersion" : "9.2.1",
"ip" : null
},
"build" : {
"time" : "Jan 8 2019 16:43:40",
"productBundleIdentifier" : "com.facebook.WebDriverAgentRunner"
}
},
"sessionId" : "EFB2B5B5-AED7-4B10-AB10-9AC29731DFE7",
"status" : 0
}
我显示这样,连接显示成功了,但是手机屏幕不显示,显示的都是代码,求大神助攻

云曦 使用 facebook-wda 包实现 ios app 自动化测试 中提及了此贴 01月06日 00:00
匿名 #84 · 2018年12月19日
Du Zhengchao 回复

遇到了同样的情况,想问下你解决了么

我想请问一下各位大神,如果是我在 VMware 虚拟机下进行的操作,步骤全部成功,status 也可以访问,我应该怎么在 win 上连接这个服务呢,ping 虚拟机的 ip 可以 ping 成功,而且端口都已经打开了,我应该怎么设置才能在 win 下进行自动化开发,而不是在 mac 虚拟机下进行

文贤平 回复

但是可能页面刷新出不来:

使用--HEAD 安装最新版本

$ brew install libimobiledevice --HEAD
$ iproxy 8100 8100

但是会提示你需要更新:
Warning: libimobiledevice HEAD-26373b3_2 is already installed and up-to-date
To reinstall HEAD_3, run brew reinstall libimobiledevice
$ brew reinstall libimobiledevice <==执行这个就可以了


真机时督察看不了系统页面


问下楼主安装 libimobiledevice 没有 iproxy 这个功能了,可以告知安装的 libimobiledevice 版本是多少么,我的版本为 HEAD-26373b3_2

这个帖子仔细看可以学到很多知识😝

codeskyblue [该话题已被删除] 中提及了此贴 06月02日 22:12
codeskyblue [该话题已被删除] 中提及了此贴 06月02日 08:57
孟德功 UI 自动化框架 (基于 facebook-wda) 中提及了此贴 05月01日 10:41
匿名 #75 · 2018年04月19日
chen.zhou 回复

最后你解决了么😅


请问下为什么会有 error connecting to device,刚重装了一边发现在 test 的时候 building succeded,但是 test failed
2018-04-18 21:25:31.896962+0800 WebDriverAgentRunner-Runner[316:10522] +[CATransaction synchronize] called within transaction
2018-04-18 21:25:31.964275+0800 WebDriverAgentRunner-Runner[316:10522] Running in the background.
2018-04-18 21:25:31.972787+0800 WebDriverAgentRunner-Runner[316:10522] Running tests...
2018-04-18 21:25:32.175900+0800 WebDriverAgentRunner-Runner[316:10522] 未能载入软件包 “WebDriverAgentRunner”,因为它已损坏或丢失必要的资源。 请尝试重新安装软件包。
2018-04-18 21:25:32.176092+0800 WebDriverAgentRunner-Runner316:10522

lch 回复

以后遇到问题先在 github webdriveragent 上面查一下就有了。。。
https://github.com/facebook/WebDriverAgent/issues/845

@weamylady 求大神解答,我现在实机 iOS 9.3.2 连接正常,screenshot 截图时报错 File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/wda/init.py", line 295, in screenshot
value = self.http.get('screenshot').value
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/wda/init.py", line 101, in fetch
return self.fetch_no_alert(method, url, data)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/wda/
init.py", line 107, in _fetch_no_alert
return httpdo(target_url, method, data)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/wda/
init_.py", line 83, in httpdo
raise WDAError(r.status, r.value)
wda.WDAError: WDAError(status=13, value=To screenshot a frame, it must have non-0 area.请问该如何解决

匿名 #70 · 2018年04月04日
water 回复

貌似 FB 还没有解决这个问题 appium 解决了么 大神

匿名 #68 · 2018年04月04日

现在遇到一个问题 就是 ipad 横屏时 通过 screenshot 接口获取的截图还是竖屏的
IOS 9.3 OS 10.13.4 IPAD WEBDRIVERAGENT 最新代码
@weamylady 大神求解决


runner 也要选 team 哈 不然会报错

dy20082250 回复

我把 iproxy 8100 8100 到 localhost 之后,频繁掉线,而且 inspector 的反应非常慢,十分抓狂。

烟消云散 回复

请加 sudo

特别提示:在执行./Scripts/bootstrap.sh 命令时,需要 cd 到 WebDriverAgent 目录下执行,并且使用 sudo
执行更改签名不重复时,AgentLib 不需要改,仅需改 Runner 就行

Work for me. Thx.

62楼 已删除
cloudwind 回复

有解决么? 我也遇到相同问题了

dy20082250 回复

重新安装下 appium 和配置 WebDriverAgent(建议使用付费版开发者账号)就可以了,可以参照:https://testerhome.com/topics/8375

不知道是否遇到过一下情况:

使用 xcode 运行正常,然后在 console 获得
192.168.59.112:8100 这个信息

在浏览器中访问 http:192.168.59.112/status 时,一直在加载;

已经安装了 imobiledevice,并且使用 iproxy 进行设置,这个问题依然存在。。。

卡在 webdriveragent 启动了,别人都是启动的 8100,我这边直接启动的 0 端口。。
2017-11-23 17:12:41.908748+0800 WebDriverAgentRunner-Runner[487:102322] Built at Nov 21 2017 13:57:28
2017-11-23 17:12:41.984063+0800 WebDriverAgentRunner-Runner[487:102322] ServerURLHere->http://11.1.1.104:0<-ServerURLHere

aiyanyuan 回复

模拟器就是 localhost

模拟器安装了 webdriveragent 后,我获取不了 ip 地址,求助大佬

http://10.242.43.120:8100/status,访问一直是超时状态,已经参考文章方法将端口转发了,还是不好使,求指教
➜ ~ iproxy 8100 8100
waiting for connection

water 回复

主要我最开始是直接输入./Scripts/bootstrap.sh ,依赖下载不下来
后面

mkdir -p Resources/WebDriverAgent.bundle
sh ./Scripts/bootstrap.sh

就能下载依赖了,而使用就要靠重启 iPhone 了

烟消云散 回复

Appium 包里面的先试试好不好使,不好使就自己下一个。

烟消云散 回复

我是单独下载的

water 回复

话说你的 WDA 是 appium 一起下的还是单独从 Facebook 的 GitHub 上 git 下来的哦?

烟消云散 回复

wdaproxy 的源码里面

water 回复

你这段在哪个文件里面的~~~我找半天没找到

codeskyblue 回复

66666

water 回复

soga,其实大神的 wdaproxy 我也用过,但是 WDA 有一部分,真机总是使用不了,报错为 operation never finished bootstrapping,本来根据我的方法重启后已经能够运行 WDA 了,但是 wdaproxy 还是显示 502 Bad,不知道是不是需要连接到什么?

烟消云散 回复

这个很简单,给你一段代码参考一下,是论坛大神写的 wdaproxy 上的:
https://github.com/openatx/wdaproxy

tap: function(x, y) {
          var self = this;
          return $.ajax({
            url: "/session/" + self.sessionId + "/wda/tap/0",
            method: "POST",
            data: JSON.stringify({
              x: x,
              y: y
            }),
          }).then(function(ret) {
            if (ret.status !== 0) {
              console.log(ret.value);
            } else {
              return "Success";
            }
          })
        },

initScreenSize: function() {
          $.\
          ({
              url: "/status",
            })
            .then(function(ret) {
              this.sessionId = ret.sessionId;
              return $.ajax({
                url: "/session/" + ret.sessionId + "/window/size",
              })
            }.bind(this))
            .then(function(ret) {
              this.display.width = ret.value.width;
              this.display.height = ret.value.height;
            }.bind(this))
        },
water 回复

有空多交流啊,我现在也是技术难关卡到不知道怎么去实现 iPhone 的触屏事件

烟消云散 回复

目前技术上的难点已经解决,看了 ios minicap 源码,直接连接它的服务端不停发截图过来就可以回显了。WebdriverAgent 也可以直接用 WebSocket 通讯发送命令就行了。就是现在缺少技术栈~~还需要人力和时间啊!有空多交流交流

water 回复

我现在也在攻坚这个问题。。。但是我只有一个人在做这个,但是好难啊。感觉从百度 MTC 做了远程真机开始,现在好像大家都准备搞这个。

烟消云散 回复

我们还没有大规模使用,目前主要在预言 ios 远程真机,想结合 ios minicap 和 WebdriverAgent 来搞~~

water 回复

我也是用开发者账号证书打包的。。。
我大概解决了这个问题,方法在这里 https://testerhome.com/topics/9666 不知道还有其他解决方案没有。

烟消云散 回复

我用的是开发者账号的证书打包的,你的错误还是百度一下看看?

water 回复

Error Domain=IDETestOperationsObserverErrorDomain Code=6 "Early unexpected exit, operation never finished bootstrapping - no restart will be attempted" UserInfo={NSLocalizedDescription=Early unexpected exit, operation never finished bootstrapping - no restart will be attempted}

Testing failed:
Test target WebDriverAgentRunner encountered an error (Early unexpected exit, operation never finished bootstrapping - no restart will be attempted)
这个错误怎么解决啊,我看文档说要信任 WebDriverAgentRunner ,但是我手机根本在设备管理就没发现 WebDriverAgentRunner 的证书啊??求指点

和曦 回复

大哥,WDA 也是这么解决吗?

安装依赖会报错:
./Scripts/bootstrap.sh

Fetching dependencies
Building Inspector
Creating bundle directory...
Fetching Inspector dependencies...
npm WARN deprecated css-list@0.1.3: Deprecated.
npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN web-driver-inspector@1.0.0 No repository field.

npm ERR! code EINTEGRITY
npm ERR! sha1-iXSDlvnXQZ1fon3ztIhy2tv4MYo= integrity checksum failed when using sha1: wanted sha1-iXSDlvnXQZ1fon3ztIhy2tv4MYo= but got sha1-xS7cVf1/ntQkN1oDgj2kv8mwIMk=. (152617 bytes)
求一发解决方案

water 回复

WDA 官网是什么?不是都从 Git 上面下吗?

和曦 回复

我的解决了,上 wda 官网,重新下载那些包就行了。

codeskyblue 回复

大哥,我解决了,呜呜呜~
https://testerhome.com/topics/8820#reply47

codeskyblue 回复

😟 关键是不能保证换电脑就能解决啊。

和曦 回复

你还是换个电脑吧

codeskyblue 回复

这个我最早就试过用个人证书,也更改了 BundleID,没效果。
后来我又更换成企业证书,也改了 BundleID,还是没效果。
今天把 Xcode 升级到 8.3.3,也还是一样的错误。
我用 macaca 的 XCTestWD,还是这个问题,绕不过去的坎,心塞。😖

和曦 回复


解决方案已经更新了

water 回复

没解决,暂时搁置了😞

Zander Chao Appium 1.6.5 and ios 10.3.3 真机测试 中提及了此贴 07月21日 15:11
chen.zhou 回复

估计是没有编译 build.js 吧

使用 “http://localhost:8100/staus” 和 “http://localhost:8100/source” 都有数据返回,并且返回的内容都是对的,但是在浏览器里打开 “http://localhost:8100/inspector” ,页面显示空白,没有任何信息。
从端口输出看到的错误如下:
accepted connection, fd = 4
waiting for connection
accepted connection, fd = 6
waiting for connection
Number of available devices == 1
Requesting connecion to device handle == 1 (serial: a43c429e49bb9862d018b9ee39c662c0d4cc6481), port 8100
Number of available devices == 1
Requesting connecion to device handle == 1 (serial: a43c429e49bb9862d018b9ee39c662c0d4cc6481), port 8100
run_ctos_loop: fd = 6
run_ctos_loop: fd = 4
run_stoc_loop: fd = 6
run_stoc_loop: fd = 4
recv failed: Resource temporarily unavailable
recv failed: Resource temporarily unavailable
recv failed: Operation not permitted
MAC 系统版本是 10.12,iOS 版本 10.2,Xcode 版本是 8.3,辛苦大神帮忙看下是什么问题

和曦 回复

请问您的这个 xctest 的问题解决了吗?我买了开发者账号之后也卡在这里了,网上找了很多资料,对 xctest.framework 重签名也没用,请问有解决方案了吗? 万分感谢

codeskyblue ATX 资料快速索引 中提及了此贴 06月21日 19:39


无论真机还是模拟器运行都提示这个,求大神帮助呀~~

codeskyblue 基于 WebDriverAgent 的 iOS 远程控制 中提及了此贴 06月02日 15:52
codeskyblue 回复

试过了,重启 Mac 和 iPhone 都无效啊😭

和曦 回复

marekcirkos 大神说让你重启电脑

虚拟机里可以跑成功,真机不行。

跑模拟器 Xcode Debug 的 log:

2017-04-06 13:47:40.352 XCTRunner[4833:113945] Running tests...
2017-04-06 13:47:48.499 XCTRunner[4833:113945] Continuing to run tests in the background with task ID 1
Test Suite 'All tests' started at 2017-04-06 13:47:48.672
Test Suite 'WebDriverAgentLib.framework' started at 2017-04-06 13:47:48.674
Test Suite 'WebDriverAgentLib.framework' passed at 2017-04-06 13:47:48.674.
     Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.001) seconds
Test Suite 'WebDriverAgentRunner.xctest' started at 2017-04-06 13:47:48.676
Test Suite 'UITestingUITests' started at 2017-04-06 13:47:48.677
Test Case '-[UITestingUITests testRunner]' started.
    t =     0.00s     Start Test at 2017-04-06 13:47:48.678
    t =     0.00s     Set Up
2017-04-06 13:47:48.685 XCTRunner[4833:113945] Built at Apr  6 2017 11:53:41
2017-04-06 13:47:48.705 XCTRunner[4833:113945] ServerURLHere->http://192.168.199.187:8100<-ServerURLHere
    t =    47.95s     Find the Application "local.pid.4769" 0x6080002a69c0
    t =    47.95s         Snapshot accessibility hierarchy for local.pid.4769

本地访问 server 后返回:

{
  "value" : "Unhandled endpoint: \/ -- http:\/\/192.168.199.187:8100\/ with parameters {\n    wildcards =     (\n        \"\"\n    );\n}",
  "sessionId" : "41A81AA0-6090-4419-9D81-C1EFA27ACD59",
  "status" : 1
}

本地访问 status 返回:

{
  "value" : {
    "state" : "success",
    "os" : {
      "name" : "iOS",
      "version" : "10.3"
    },
    "ios" : {
      "simulatorVersion" : "10.3",
      "ip" : "192.168.199.187"
    },
    "build" : {
      "time" : "Apr  6 2017 11:53:42"
    }
  },
  "sessionId" : "41A81AA0-6090-4419-9D81-C1EFA27ACD59",
  "status" : 0
}

本地访问 inspector 截图:

跑真机时 Xcode Debug 的 Log:

dyld: Library not loaded: @rpath/XCTest.framework/XCTest
  Referenced from: /var/containers/Bundle/Application/67D95C0C-0253-4654-A88B-1C646458E939/WebDriverAgentRunner-Runner.app/XCTRunner
  Reason: no suitable image found.  Did find:
    /private/var/containers/Bundle/Application/67D95C0C-0253-4654-A88B-1C646458E939/WebDriverAgentRunner-Runner.app/Frameworks/XCTest.framework/XCTest: code signing blocked mmap() of '/private/var/containers/Bundle/Application/67D95C0C-0253-4654-A88B-1C646458E939/WebDriverAgentRunner-Runner.app/Frameworks/XCTest.framework/XCTest'
    /private/var/containers/Bundle/Application/67D95C0C-0253-4654-A88B-1C646458E939/WebDriverAgentRunner-Runner.app/Frameworks/XCTest.framework/XCTest: code signing blocked mmap() of '/private/var/containers/Bundle/Application/67D95C0C-0253-4654-A88B-1C646458E939/WebDriverAgentRunner-Runner.app/Frameworks/XCTest.framework/XCTest'
(lldb) 

试过很多方法,现在怀疑是 Xcode 的问题
虽然我的 Xcode 从 8.2.1 升级到了 8.3,iOS 从 10.0.2 升级到了 10.3 和 10.3.1,但都没有解决:(
https://github.com/facebook/WebDriverAgent/issues/429
https://github.com/facebook/WebDriverAgent/issues/521

现在我该怎么办?

大赞,成功了

得到的 IP 打不开

9楼 已删除
8楼 已删除

不用 xcodebuild tools,而从 gui 到 xcode 里运行测试的话,报错如下,说明还没有到运行 bootstrap 的程度,payload 就挂了。

codeskyblue 回复

dyld: Library not loaded: @rpath/XCTest.framework/XCTest
github 上有人提了这个 issue,但是被关闭了,说升级到 1.6.4 可以。但是我这不行啊。
https://github.com/Carthage/Carthage/issues/756
dyld: Library not loaded: @rpath/XCTest.framework/XCTest
Referenced from: /var/containers/Bundle/Application/4492CC47-E278-4D20-93DD-B9FF170479C8/WebDriverAgentRunner-Runner.app/XCTRunner
Reason: no suitable image found. Did find:

另外,这个路径我也打不开啊
/var/containers/
这两个我倒是能找到,这个 bundle 到底有什么用啊?
state->old_bundle: /var/folders/f3/fsxd3f315vg22yc0997bxrl00000gp/C/com.apple.DeveloperTools/All/Xcode/EmbeddedAppDeltas/b52998ac4571334a6ce75968a8a691a2/e01d730b625c83ad877fb699701bc35ea3e800ec/WebDriverAgentRunner-Runner.app
state->new_bundle: /Users/xiaoxue/Library/Developer/Xcode/DerivedData/WebDriverAgent-brdadhpuduowllgivnnvuygpwhzy/Build/Products/Debug-iphoneos/WebDriverAgentRunner-Runner.app

和曦 回复

看提示,上面说没有运行 bootstrap

在进行下面操作的时候一直报错。
OSX:10.12.3
Xcode:8.2.1
iPhone:10.0.2
试过把 appium-server 从 1.6.3 更新到 1.6.4@beta,问题依旧存在。
在 appium-desktop 1.0.0@beta3 上也是。
@codeskyblue,请问有什么解决办法?
谢谢!

# 运行测试
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination "$UDID" test

log 如下:

=== BUILD TARGET WebDriverAgentRunner OF PROJECT WebDriverAgent WITH CONFIGURATION Debug ===

Check dependencies

MDMCreateDeltaDirectory:1920 calling MDMDirectoryDiff with:
state->old_bundle: /var/folders/f3/fsxd3f315vg22yc0997bxrl00000gp/C/com.apple.DeveloperTools/All/Xcode/EmbeddedAppDeltas/b52998ac4571334a6ce75968a8a691a2/e01d730b625c83ad877fb699701bc35ea3e800ec/WebDriverAgentRunner-Runner.app
state->new_bundle: /Users/xiaoxue/Library/Developer/Xcode/DerivedData/WebDriverAgent-brdadhpuduowllgivnnvuygpwhzy/Build/Products/Debug-iphoneos/WebDriverAgentRunner-Runner.app
state->dst_bundle: /var/folders/f3/fsxd3f315vg22yc0997bxrl00000gp/C/com.apple.DeveloperTools/All/Xcode/EmbeddedAppDeltas/WebDriverAgentRunner-Runner.app.NVj5Yt/WebDriverAgentRunner-Runner.app_sparse.ipa/Payload//WebDriverAgentRunner-Runner.app, binaryDiff flag: FALSE
    dst_ipa: /var/folders/f3/fsxd3f315vg22yc0997bxrl00000gp/C/com.apple.DeveloperTools/All/Xcode/EmbeddedAppDeltas/WebDriverAgentRunner-Runner.app.NVj5Yt/WebDriverAgentRunner-Runner.app_sparse.ipa
__MDMDirectoryDiff_block_invoke.37:1473 calling writeDictToFile with: /var/folders/f3/fsxd3f315vg22yc0997bxrl00000gp/C/com.apple.DeveloperTools/All/Xcode/EmbeddedAppDeltas/WebDriverAgentRunner-Runner.app.NVj5Yt/WebDriverAgentRunner-Runner.app_sparse.ipa/ManifestCache.plist
writeDictToFile:1278 ==== Successfully wrote Manifest cache to /var/folders/f3/fsxd3f315vg22yc0997bxrl00000gp/C/com.apple.DeveloperTools/All/Xcode/EmbeddedAppDeltas/WebDriverAgentRunner-Runner.app.NVj5Yt/WebDriverAgentRunner-Runner.app_sparse.ipa/ManifestCache.plist
dyld: Library not loaded: @rpath/XCTest.framework/XCTest
  Referenced from: /var/containers/Bundle/Application/4492CC47-E278-4D20-93DD-B9FF170479C8/WebDriverAgentRunner-Runner.app/XCTRunner
  Reason: no suitable image found.  Did find:
    /private/var/containers/Bundle/Application/4492CC47-E278-4D20-93DD-B9FF170479C8/WebDriverAgentRunner-Runner.app/Frameworks/XCTest.framework/XCTest: code signing blocked mmap() of '/private/var/containers/Bundle/Application/4492CC47-E278-4D20-93DD-B9FF170479C8/WebDriverAgentRunner-Runner.app/Frameworks/XCTest.framework/XCTest'
    /private/var/containers/Bundle/Application/4492CC47-E278-4D20-93DD-B9FF170479C8/WebDriverAgentRunner-Runner.app/Frameworks/XCTest.framework/XCTest: code signing blocked mmap() of '/private/var/containers/Bundle/Application/4492CC47-E278-4D20-93DD-B9FF170479C8/WebDriverAgentRunner-Runner.app/Frameworks/XCTest.framework/XCTest'
2017-03-15 11:18:27.561 xcodebuild[1602:8414] Error Domain=IDETestOperationsObserverErrorDomain Code=5 "Early unexpected exit, operation never finished bootstrapping - no restart will be attempted" UserInfo={NSLocalizedDescription=Early unexpected exit, operation never finished bootstrapping - no restart will be attempted}

Testing failed:
    Test target WebDriverAgentRunner encountered an error (Early unexpected exit, operation never finished bootstrapping - no restart will be attempted)
** TEST FAILED **
codefarmer ATX 文档 - iOS WebDriverAgent 环境搭建 入门 中提及了此贴 03月09日 11:52
codeskyblue ATX 系列 - 并行测试多个 iOS 设备 中提及了此贴 02月16日 15:43
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册