2012-01-18 8 views
18

Tengo una aplicación de iPhone que estoy probando usando la automatización de IU.Intenta tocar un UIButton en una UITableViewCell usando la automatización de UI Error con "no se pudo tocar"

Tengo un botón en un UITableViewCell pero cuando trato de tocarlo usando la automatización de IU aparece el siguiente error.

Script threw an uncaught JavaScript error: target.frontMostApp().mainWindow().scrollViews()[0].elements()[element_name].tableViews()[0].elements().firstWithPredicate(name contains[c] 'Brooklyn').elements()["detailsButton"] could not be tapped 

que han permitido la accesibilidad en el botón en el Interface Builder y se asigna la etiqueta de accesibilidad (e identificador) "detailsButton". Puedo recuperar el elemento del botón y he verificado que es válido. Simplemente no puedo tocarlo por alguna razón.

UIATableCell Brooklyn

El UIButton es un botón rectangular redonda con la interacción del usuario habilitado. Gracias por cualquier comentario.

+0

¿Ha intentado establecer un retraso como target.delay (3); antes de tocar el botón? –

+2

¿Qué le parece publicar su código, no con el mensaje de error? –

+0

Creo que es un problema con respecto a cómo se ha hecho la adición del botón a la mesa-celda. Publique el código para una mejor respuesta –

Respuesta

1

Puede asignar el UIButton excepto con el botón redondo rect. Y también puede establecer la acción del botón objetivo en su clase de controlador donde se presentan los métodos delegados de vista de tabla.

0

usted tiene que utilizar ButtonType=Custom

0
but=[UIButton buttonWithType:UIButtonTypeCustom]; 

Debe utilizar un tipo de botón personalizado.

+2

Probablemente deberías explicar algo más que solo publicar una sola línea de código. – Heskja

0

No sé por qué está utilizando la automatización de UI. Pero todo lo que sé sobre cómo agregar UIButton en una tableviewcell-

1) simplemente agregue UIButton en UITableViewCell.
2) establezca el valor de la etiqueta UIButton's y agregue el objetivo a ese botón.
3) En el método del botón de destino, puede obtener el objeto UIButton y hacer sus cosas por allá ..

la esperanza que esto te ayuda.

1

Intente hacer valer primero si el botón existe, use tuneup_js para facilitar las afirmaciones. Luego afirme si el botón está habilitado.

Ha intentado: target.frontMostApp().mainWindow().scrollViews()[0].elements()[element_name].tableViews()[0].**cells()**.firstWithPredicate("name contains[c] 'Brooklyn'").elements()["detailsButton"]?

También publique otra imagen que muestre UIATableCell expandido donde existe el DetallesnetButton.

-1

¿Has probado esto?

target.frontMostApp().mainWindow().scrollViews()[0].tableViews()[0].elements().firstWithPredicate(name contains[c] 'Brooklyn').buttons()["detailsButton"].tap() 
0

He encontrado el mismo problema. Después de agregar la demora, funciona.

UIATarget.localTarget().delay(1); 
0

Puede distribuir un evento del grifo sobre toda la ventana:

function tap_from_window(elem) { 
    var mainWindow = target.frontMostApp().mainWindow(); 
    var elemRect = elem.rect(); 
    var windowRect = mainWindow.rect(); 

    var xPos = (20 + elemRect.origin.x)/windowRect.size.width; 
    var yPos = (50 + elemRect.origin.y)/windowRect.size.height; 

    mainWindow.tapWithOptions({tapOffset:{x:xPos, y:yPos}});  
} 

var target = UIATarget.localTarget(); 
var window = target.frontMostApp().mainWindow(); 
var tableView = window.scrollViews()[0].elements()[element_name].tableViews()[0]; 
tap_from_window(tableView.elements().firstWithPredicate(name contains[c] 'Brooklyn')) 

Como muchas cosas relacionadas con iOS, no tengo ni idea de por qué el elemento no se puede tomar directamente. He adaptado la función anterior del código en esta publicación: scrollToVisible error while testing on a device, UIAutomation

Cuestiones relacionadas