Voglio usare il goniometro su Java e non su Node.js. È possibile utilizzare Protractor con Java o Python? Non vogliamo aggiungere un'altra tecnologia per testare e vogliamo utilizzare le tecnologie esistenti.Utilizzare il rapportatore con Java
risposta
Sfortunatamente non si ha molta scelta in proposito, poiché Protractor è un framework di test JavaScript per AngularJS, è distribuito tramite Node.js.
Non vogliamo aggiungere un'altra tecnologia per testare e utilizzare le tecnologie esistenti.
Il goniometro è personalizzato per applicazioni angolariJS. Quindi, se la tua applicazione è stata creata utilizzando AngularJS, il goniometro sarà d'aiuto poiché ha un supporto integrato per il caricamento e le azioni della pagina di AngularJS.
Se l'applicazione non è costruita su Angular, è possibile utilizzare Selenium WebDriver sopra qualsiasi altra lingua preferita.
Selenium fornisce agli utenti la documentazione sull'uso di Python come test di media scrittura, ulteriori informazioni su questo here.
Per aggiungere qualcosa alla risposta di Tom riportata sopra, è anche possibile testare applicazioni/siti Web non angolari con Goniometro. Ma non c'è ancora modo, puoi scrivere i test dei goniometri usando Java o Python dato che il nucleo del Protractor è costruito su Javascript (node.js) ed è puramente Javascript. Spero che sia d'aiuto.
Il modo migliore per utilizzare il goniometro è, avere i test dei goniometri scritti separatamente in javascript e chiamare quei test da java/python quando richiesto. Questo è quello che stiamo facendo attualmente!
Puoi dare un esempio di come farlo per favore? – alannichols
Il goniometro è una libreria JS, quindi non è possibile eseguirlo in Java e testare le app angolari senza Goniometro è difficile perché il codice del test deve attendere il completamento dei processi angolari prima che si verifichino interazioni come il clic.
Fortunatamente, Angular ha facilitato l'identificazione al termine dell'elaborazione.
C'è una funzione JS che richiede una richiamata e avviserà l'utente quando l'angolare sarà pronto.
angular.getTestability("body").whenStable(callback);
NOTA: questo funziona con Angular 1.4.8. Alcune altre versioni di Angular hanno un metodo diverso che è simile.
È possibile richiamare il metodo di testabilità dal codice di test Java utilizzando il seguente metodo semplice o qualcosa di simile.
private void waitForAngular() {
final String script = "var callback = arguments[arguments.length - 1];\n" +
"var rootSelector = \'body\';\n" +
"var el = document.querySelector(rootSelector);\n" +
"\n" +
"try {\n" +
" if (angular) {\n" +
" window.angular.getTestability(el).whenStable(callback);\n" +
" }\n" +
" else {\n" +
" callback();\n" +
" }\n" +
"} catch (err) {\n" +
" callback(err.message);\n" +
"}";
((JavascriptExecutor) driver).executeAsyncScript(script, new Object[0]);
}
chiamata waitForAngular() prima di interagire con il conducente con un metodo come clic.
Si potrebbe desiderare un diverso rootSelector da "body" e si potrebbe voler lanciare un errore se l'angolare non esiste ma questo funziona bene per le mie esigenze.
Il goniometro fornisce altri selettori che possono semplificare il collaudo di un'app Angolare, ma personalmente utilizzo i selettori ID e Classe, quindi non ne ho bisogno.
Esiste già una libreria in Java per l'automazione degli oggetti Angular.La sua costruito sulla base goniometro chiamato "ngWebDriver"
Eccellente! Iscritto a ngWebDriver in github. Qualche idea quando il lato Angular2 sarà pronto? – bobanahalf
@bobanahalf Non ho avviato alcun colloquio con il proprietario del repository Paul Hammant per quanto riguarda il supporto di Angular2. Ma sembra che l'abbia già iniziato (indovinando) – Manoj
A partire dal 2017, ho trovato queste librerie goniometro per Java:
- jProtractor - Lo sviluppo è un po 'inattivo ma ho provato a lavorare. Fare clic su here per ulteriori dettagli.
- ngWebDriver - Sviluppato da Paul Hammant (co-creatore di Selenium). Attualmente in sviluppo attivo con una buona documentazione.
Snippet di codice:
<input type="text" ng-model="startBalance" placeholder="Enter your current balance" class="ng-pristine ng-valid">
// jProtractor
WebElement startBalanceField = driver.findElement(NgBy.model("startBalance"));
// ngWebDriver
WebElement startBalanceField = driver.findElement(ByAngular.model("startBalance"));
- 1. Impostare il profilo firefox con il rapportatore
- 2. Apertura di un file con il rapportatore
- 3. Scarica il file su Firefox con il rapportatore
- 4. Modifica dello stato del hover con il rapportatore
- 5. Ottiene la posizione di offset dell'elemento con il rapportatore
- 6. Scorri verso il basso fino a un elemento con rapportatore
- 7. Verifica se l'immagine è valida e caricata con il rapportatore
- 8. Pulsante Indietro del browser utilizzando il rapportatore o javascript
- 9. Come utilizzare il rapportatore per verificare se un elemento è visibile?
- 10. Come utilizzare SNMP con Java?
- 11. Come accedere agli elementi di griglia ng usando il rapportatore?
- 12. L'uso di Firefox 35 con un rapportatore produce un errore
- 13. Angolare non definito su Ionic 2 utilizzando il rapportatore 2
- 14. In attesa di finestre di dialogo di caricamento ionico con il rapportatore
- 15. Utilizzare java-apns per rilevare problemi con il push
- 16. Posizionare una rotellina del mouse nel rapportatore
- 17. Timeout in attesa che il rapportatore si sincronizzi con la pagina dopo 11 secondi
- 18. Legacy Java utilizzare il codice di com.sun.net.ssl.internal.ssl.Provider()
- 19. Come utilizzare il metodo readline() in Java?
- 20. Come utilizzare il metodo toString in Java?
- 21. Come utilizzare correttamente il comparatore Java?
- 22. Riepiloga i risultati del rapportatore su più file spec.
- 23. Utilizzare "this" con il nome della classe
- 24. Come utilizzare in-memory database con la prova iniettato con il gioco java
- 25. Compilare a bytecode java (senza utilizzare Java)
- 26. impostazione parametro ambiente per i test e2e del rapportatore
- 27. Come utilizzare il servizio WCF con Android
- 28. ottieni array di valori diversi dello stesso elemento usando il rapportatore
- 29. È una cattiva pratica utilizzare il keystore standard Java
- 30. Java BlockingQueue con il batching?
Benvenuti a SO! Dato che sei nuovo di SO, potresti leggere le seguenti pagine di aiuto: ["Come faccio a fare una buona domanda?"] (Http://stackoverflow.com/help/how-to-ask) e ["How per creare un esempio Minimo, Completo e Verificabile "] (http://stackoverflow.com/help/mcve) – Jaap
Ho già letto loro.grazie :) – user3762901