• 这个版本是没有元素序号的,我自己总结的经验是元素序号可以自己数的!
    同一级下相同的元素第一个就是【1】第二个就是【2】,不同的元素重新数。
    就比如说你贴的这个代码:
    XCUIElementTypeOther[3] 这个就是在这一级下你要点击的元素在第三个 XCUIElementTypeOther(这里是说第三个相同的 XCUIElementTypeOther)中。
    XCUIElementTypeOther[2] 同上,在第二个中。

  • 右边不是有元素的属性吗,你可以直接根据这些属性编写脚本
    笨办法利用节点一级一级的去找你要点击的元素
    相对方便的可以通过查找属性进行点击事件 比如:@name="搜索"

  • doubleTap(双击屏幕)click(单击屏幕)longTap (长按屏幕)

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

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

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

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

  • "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 中的点击操作的话 我觉得还可以 复杂的动作(画线,拖动)我没试

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