Sto cercando di capire come UIAutomation può essere utilizzato per eseguire test automatici delle applicazioni, quindi ho creato un'app di convertitore di temperatura che può essere guidata dall'interfaccia JavaScript. Ecco l'interfaccia utente:Come ottenere valori dai campi di testo con UIAutomation
Il campo di testo in alto ha un'etichetta di accessibilità di "Celsius", allo stesso modo il campo inferiore ha "Fahrenheit", come la sua etichetta Accessibilità. Sto cercando di guidare attraverso questo script:
UIALogger.logStart("Test -40ºC == -40ºF");
var window = UIATarget.localTarget().frontMostApp().mainWindow();
var celsiusField = window.textFields()["Celsius"];
var fahrenheitField = window.textFields()["Fahrenheit"];
var convertButton = window.buttons()["Convert"];
celsiusField.setValue("-40");
convertButton.tap();
var fahrenheitValue = fahrenheitField.value();
if (fahrenheitValue == "-40.0") {
UIALogger.logPass("-40C == -40F");
} else {
UIALogger.logFail("-40C == " + fahrenheitValue + "F");
}
Questo imposta correttamente il testo nel campo Celsius a "-40", e quando il pulsante viene toccato, l'applicazione aggiorna il testo nel campo di Fahrenheit "-40.0". Tuttavia, fahrenheitValue
ha il valore "Fahrenheit" (il nome/etichetta del campo di testo), quindi il test ha esito negativo. Mi chiedevo se questo fosse forse un problema di temporizzazione, quindi metti un ritardo di un secondo dopo il rubinetto, che non ha cambiato il comportamento.
È possibile estrarre il testo dal campo di testo e confrontarlo con il valore previsto?
Questa sembra essere stata la risposta. Ho rimosso il testo segnaposto e ora le cose funzionano come dovrebbero. Probabilmente dovrei presentare un bug su questo :) –