È possibile toccare un punto specifico con XCUICoordinate
API. Sfortunatamente non puoi dire semplicemente "tocca 10,10" facendo riferimento a una coordinata di pixel. Dovrai creare la coordinata con un offset relativo su una vista reale.
Possiamo utilizzare la vista Web indicata per interagire con la coordinata relativa.
let app = XCUIApplication()
let webView = app.webViews.element
let coordinate = webView.coordinateWithNormalizedOffset(CGVector(dx: 10, dy: 10))
coordinate.tap()
Nota a margine, ma avete provato interagire con la vista web direttamente? Ho avuto molto successo usando app.links["Link title"].tap()
o app.staticTexts["A different link title"].tap()
. Here's a demo app I put together demonstrating interacting with a web view.
Aggiornamento: Come Michal W. sottolineato nei commenti, è ora possibile toccare una coordinata direttamente, senza preoccuparsi di normalizzare l'offset.
let normalized = webView.coordinateWithNormalizedOffset(CGVector(dx: 0, dy: 0))
let coordinate = normalized.coordinateWithOffset(CGVector(dx: 10, dy: 10))
coordinate.tap()
noti che passo 0,0 al vettore normalizzato e quindi il punto reale, 10,10, alla seconda chiamata.
fonte
2016-03-29 14:39:20
non sono sicuro che sia corretto, come ho bisogno di aggiungere 'coordinateWithOffset' per eseguire x/y del rubinetto: lasciare cooridnate = self.coordinateWithNormalizedOffset (CGVector (dx: 0 , dy: 0)). coordinateWithOffset (CGVector (dx: posizione.x, dy: posizione.y)) cooridnate.tap() https://forums.developer.apple.com/thread/13373 –
Buona idea! Grazie @ MichałW. Ho notato il commento in un aggiornamento della risposta poiché era già stato accettato. –