Estou tentando gerar um UItest no Xcode. Quando tento deslizar o UIview, obtenho um erro:
Timestamped Event Matching Error: Failed to find matching element
Isso também acontece se eu tentar tocar em UIView.
Estou tentando gerar um UItest no Xcode. Quando tento deslizar o UIview, obtenho um erro:
Timestamped Event Matching Error: Failed to find matching element
Isso também acontece se eu tentar tocar em UIView.
Respostas:
Você deve verificar se a opção 'Acessibilidade' está habilitada para o objeto UIView do qual está deslizando, por exemplo:
fastlane
para tirar screenshots de um tableView. stackoverflow.com/a/39331154/4475605
isAccessibilityElement = true
Normalmente, esse problema é observado quando o elemento pai do elemento que você deseja registrar é definido como isAccessibilityElement = true. Em geral, você precisa ter o elemento pai definido como falso para acessar o elemento filho. Por exemplo: se você tem um UILabel dentro de uma visão, a acessibilidade deve ser definida como falsa para a visão e definida como verdadeira para o UILabel.
No Xcode 9.3, onde isso aparentemente ainda é um problema, o que fiz foi:
Para gravar um novo teste, não acho que haja uma solução ainda. Mas, se você usar uma extensão forçando o tap com um teste que já existe, funciona.
Exemplo de uso:
extension XCUIElement {
func forceTapElement() {
if self.hittable {
self.tap()
}
else {
let coordinate: XCUICoordinate = self.coordinateWithNormalizedOffset(CGVectorMake(0.0, 0.0))
coordinate.tap()
}
}
}
func testSomethingWithCells() {
let app = XCUIApplication()
let cells = app.tables.cells
sleep(1)
cells.elementBoundByIndex(0).forceTapElement()
}
Você pode verificar a postagem original aqui:
Uma solução que funcionou para mim foi identificar o objeto de forma diferente.
No Xcode 8, consegui usar o seguinte:
XCUIApplication().tables.cells["Camera Roll"].buttons["Camera Roll"].tap()
Com o Xcode 9 obtive o erro mencionado nesta pergunta. Acabou usando o seguinte, que funcionou (embora mais instável do que a opção original)
XCUIApplication().cells.element(boundBy: 1).tap()