Appium Appium 做 iOS 真机自动化测试遇到问题,请求大神指点

冯朗 · 2017年09月04日 · 最后由 渐次消逝 回复于 2017年09月13日 · 1399 次阅读

前提条件
需求:计划使用 Appium 做手机版网页的测试
设备: iphone 6P 一台 10.3.3
浏览器: Safari
本地 Appium 版本: 1.6.0
本地机器:macOS 10.12.6
Java 源码如下

public class TestiOS {
    private IOSDriver driver;

    @BeforeClass
    public void setUp() throws Exception {
        //设置自动化相关参数
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("browserName", "Safari");
        capabilities.setCapability("platformName", "iOS");
        capabilities.setCapability("udid", "827dc51fd4adcc5234164e581f63bcba11547923");
        capabilities.setCapability("platformVersion", "10.3");
        capabilities.setCapability("deviceName", "iPhone 6 Plus");
        capabilities.setCapability("automationName", "XCUITest");
        //初始化
        driver = new IOSDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
    }

    @Test
    public void addContact(){
        driver.get("http://www.baidu.com");
    }

    @AfterClass
    public void tearDown() throws Exception {
        driver.quit();
    }
}

错误日志
[MJSONWP] Calling AppiumDriver.createSession() with args: [{"browserName":"Safari","p...
[Appium] Requested iOS support with version >= 10, using XCUITest driver instead of UIAutomation-based driver, since the latter is unsupported on iOS 10 and up.
[Appium] Creating new XCUITestDriver session
[Appium] Capabilities:
[Appium] browserName: 'Safari'
[Appium] platformName: 'iOS'
[Appium] udid: '827dc51fd4adcc5234164e581f63bcba11547923'
[Appium] deviceName: 'iPhone 6 Plus'
[Appium] platformVersion: '10.1'
[debug] [XCUITest] XCUITestDriver version: 2.0.26
[BaseDriver] Session created with session id: 08705370-ec3d-4324-9fce-b1b7512d18dd
[debug] [XCUITest] Xcode version set to '8.3.3'
[debug] [XCUITest] iOS SDK Version set to '10.3'
[debug] [XCUITest] Available devices: 827dc51fd4adcc5234164e581f63bcba11547923
[debug] [XCUITest] Creating iDevice object with udid 827dc51fd4adcc5234164e581f63bcba11547923
[XCUITest] Determining device to run tests on: udid: '827dc51fd4adcc5234164e581f63bcba11547923', real device: true
[XCUITest] Safari test requested
[debug] [iOSLog] Attempting iOS device log capture via libimobiledevice idevicesyslog
[debug] [iOSLog] Found idevicesyslog: '/usr/local/bin/idevicesyslog'
[XCUITest] Setting up real device
[XCUITest] Using default agent: /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/WebDriverAgent.xcodeproj
[XCUITest] Using default bootstrap: /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
[XCUITest] Launching WebDriverAgent on the device
[debug] [XCUITest] Carthage found: /usr/local/bin/carthage
[debug] [XCUITest] Running WebDriverAgent bootstrap script to install dependencies
[XCUITest] Error: Command '/bin/bash Scripts/bootstrap.sh -d' exited with code 1
at ChildProcess. (lib/teen_process.js:66:19)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:850:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:215:5)
{ Error: Command '/bin/bash Scripts/bootstrap.sh -d' exited with code 1
at ChildProcess. (lib/teen_process.js:66:19)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:850:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:215:5)
stdout: '\u001b[1mFetching dependencies\n*** Cloning KissXML\n*** Cloning peertalk\n*** Checking out KissXML at "5.0.5"\n*** Cloning KissXML\n',
[XCUITest] Running ios real device reset flow
[debug] [XCUITest] Resetting simulator
[debug] [iOSLog] Stopping iOS log capture

共收到 10 条回复 时间 点赞

Requested iOS support with version >= 10, using XCUITest driver instead of UIAutomation-based driver, since the latter is unsupported on iOS 10 and up

capabilities.setCapability("automationName", "XCUITest");

bauul 回复

从日志看,我现在已经是使用 XCUITest 了呀,XCUITestDriver version: 2.0.26

vegetableBird 回复

加上这段代码还是同样的问题。
另外请教一下,用 Safari 做网页的测试,我现在直接拿了一部手机连上电脑运行 code,手机没有做过任何其他的操作。
我的 iPhone 设备需要做什么设置吗,需要开发者账号、证书啥的吗?

冯朗 回复

需要 ios10 以上版本的手机
Requested iOS support with version >= 10
另外加上
capabilities.setCapability("automationName", "XCUITest");

除了楼上说的,启动参数还要加这段
capabilities.setCapability(IOSMobileCapabilityType.START_IWDP, true);

用 Safari 做网页的测试,手机上要 设置>Safari>高级>web 检查器要打开

渐次消逝 回复

"IOSMobileCapabilityType.START_IWDP"这个东西我在 java 工程里添加了 但是无法解决引用,我在网上搜索一下 也没有找到具体的信息。你能直接把这个字段对应的 String 值发给我吗

冯朗 回复

startIWDP 应该是这个。我用的 java-client 是 5.0.0 版本,建议你用最新版本的 java-client

渐次消逝 回复

用 safari 做 H5 的自动化,我的手机需要开发者账号吗,我看网上说还需要先申请开发者账号,安装证书,还需要安装 Lanuchsafari 的包等等这些,我都没有做,这些是必须的吗?

冯朗 回复

有开发者账号肯定是最好,我用自己的普通账号 7 天就要重签名一次,比较麻烦。我的 jar 包使用 mvn 管理的,只要引用了就会自动导入相应的 jar 包,推荐使用 mvn 管理

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