一尘不染

如何使用Xcode UITests点击特定的点

swift

我想在Fastlane快照中使用Xcode
UI测试来制作Cordova应用程序的屏幕截图。基本上,由于我的整个应用程序只是一个Web视图,因此所有Xcode
UI测试帮助程序方法都变得无关紧要,我只想点击特定的点,例如tap(x: 10, y: 10)应该在该点处进行点击{10px; 10px}

那可能很简单,但是我不知道该怎么做。

谢谢。


阅读 288

收藏
2020-07-07

共1个答案

一尘不染

您可以使用XCUICoordinateAPI轻击特定点。不幸的是,您不能只说出“ tap
10,10”以引用像素坐标。您将需要创建一个相对于实际视图有相对偏移的坐标。

我们可以使用提到的Web视图与相对坐标进行交互。

let app = XCUIApplication()
let webView = app.webViews.element
let coordinate = webView.coordinateWithNormalizedOffset(CGVector(dx: 10, dy: 10))
coordinate.tap()

旁注,但是您是否尝试过直接与Web视图进行交互?使用app.links["Link title"].tap()or
获得了很多成功app.staticTexts["A different link title"].tap()我放在一起的一个演示应用程序演示了与Web视图的交互。


更新 :正如Michal W.在评论中指出的那样,您现在可以 直接 点击坐标,而不必担心标准化偏移量。

let normalized = webView.coordinate(withNormalizedOffset: CGVector(dx: 0, dy: 0))
let coordinate = normalized.withOffset(CGVector(dx: 10, dy: 10))
coordinate.tap()

注意,我将0,0传递给归一化向量,然后将实际点10,10传递给第二个调用。

2020-07-07