• Golang 版 libimobiledevice at 2021年04月14日

    Java 版本?

    😨 没计划....

    目前只打算用 Golang 造点小轮子....

  • Golang 版 libimobiledevice at 2021年04月14日

    😂 还是有几个 TODO 没完成...
    不过完全不影响现有的全部功能

  • 可以 自定义手势操作 (TouchActions) 的呀

    拖拽动作拆解下来, 其实就是 第一次按住不松开, 然后进行移动, 结束移动后再松开

    我也用 Golang 实现了 WDA 的接口
    拖拽手势 的实现用在了 手势密码

    👇 这里有当时的实现代码
    https://github.com/electricbubble/gwda-ext-opencv/blob/7052a95b7dbc8420ece25457965916f9c85cb1fa/gesture.go#L26-L40

    func (dExt *DriverExt) GesturePassword(pathname string, password ...int) (err error) {
        var rects []image.Rectangle
        if rects, err = dExt.FindAllImageRect(pathname); err != nil {
            return err
        }
    
        sort.Slice(rects, func(i, j int) bool {
            if rects[i].Min.Y < rects[j].Min.Y {
                return true
            } else if rects[i].Min.Y == rects[j].Min.Y {
                if rects[i].Min.X < rects[j].Min.X {
                    return true
                }
            }
            return false
        })
    
        touchActions := gwda.NewTouchActions(len(password)*2 + 1)
        for i := range password {
            x, y, width, height := dExt.MappingToRectInUIKit(rects[password[i]])
            x = x + width*0.5
            y = y + height*0.5
    
            if i == 0 {
                touchActions.Press(gwda.NewTouchActionPress().WithXYFloat(x, y)).
                    Wait(0.2)
            } else {
                touchActions.MoveTo(gwda.NewTouchActionMoveTo().WithXYFloat(x, y)).
                    Wait(0.2)
            }
        }
        touchActions.Release()
    
        return dExt.PerformTouchActions(touchActions)
    }
    
  • 🍻 更新了 gwda 的扩展库 gwda-ext-opencv

    可直接通过指定图片进行操作啦

  • 😹 我有个粗暴且不成熟的建议。。启动前先暂时禁用掉其他网卡。。。等启动好后再。。。

  • 🤔 不应该呀,你是怎么创建 session 的?

    import wda
    
    c = wda.Client()
    s = c.session('com.apple.Preferences')
    

    这么操作去创建 session

    facebook-wda/examples 🌚 我偷懒从这里复制来的代码。。如果不能运行。。自己看着改下哈。。

  • 😂 因为这个 issue#323
    结果 appium 的大佬,直接重构了。。

    -   return _activeSession ?: [FBSession initWithApplication:nil];
    +   return _activeSession;
    

    我猜是因为这段代码导致的。。
    不过也只是影响到第一次访问 localhost:8100/statusnull

    当创建过 session 后就可以正常有一个值了

  • 🥳 多亏大佬的文章,才能看明白 WDA 的部分代码

    Objective-C 看久了。。还莫名觉得有点迷之"美感"...

  • 🥳 嘻嘻,徽章加上去咯

  • 😳如果你发现 当前屏幕第一个 App/文件夹 的文本内容: “自带”文件夹 这明显应该是 计算器

    🙃首先这不是 gwda 的代码问题。。这是一个在 iPhone 6s (11.4.1) 可复现的神奇现象

    并且还发现了另一种 “现象”,指定元素明明可以触发 3D Touch 并且元素绝对 可见,执行却报错并提示元素 不可见

    element not visible: The element '"计算器" Icon' is not visible on the screen and thus is not interactable
    

    不过不用担心,可以使用 session.ForceTouch 避免这种情况

    暂时没去细究是 WDA 的问题还是这个 iOS 系统版本的问题。。

    iPhone X (13.4.1) 已知没这问题。。