是否可以通过XCUI测试或任何框架,UI测试放下手指'到屏幕,然后按住它,同时改变它的坐标几次,然后释放它。
答案 0 :(得分:1)
您希望在XCUIElement上使用pressForDuration:thenDragToElement:
。
let app = XCUIApplication
let button = app.buttons["myButton"]
let text = app.staticTexts["myText"]
button.pressForDuration(2, thenDragToElement: text)
此方法可用于任何XCUIElement,而不仅仅是按钮和文本。
答案 1 :(得分:0)
使用公共API不能在XCUI中完成。
我认为这将非常困难。 XCTest
的{{1}}中有一个私有API,它可以满足您的需要。
XCEventGenerator
我不知道这是什么。 - (void)_startEventSequenceWithSteppingCallback:(CDUnknownBlockType)arg1;
的使用方式:https://github.com/avito-tech/Mixbox/blob/e590de08d5883ee3e1adedcd389c285f80db7101/Frameworks/XcuiDriver/PrivateHeaders/SwiftWrapper/EventGenerator.swift
要实现它,您需要在项目中包括私有标头,使用包装器,您可能需要使用反汇编程序,调试技巧,并了解如何在运行时对工程进行逆向工程。而且可以保证。
使用IOKit的私有API,在应用程序内部也绝对可能。示例:https://github.com/google/EarlGrey/blob/91c27bb8a15e723df974f620f7f576a30a6a7484/EarlGrey/Event/GREYTouchInjector.h
您可以模拟应用程序中的每个手势,这也需要大量的工作,并且如果使用XCUI,还需要测试运行程序和应用程序之间的IPC。但这也有缺点:如果您的应用程序上方会显示任何内容(例如:系统警报),您的手势将不会对其产生影响,因此离黑匣子测试还有点距离。