2009-10-01 18 views
5

Abbiamo un progetto di interfaccia utente Web in MVC e per i test automatici, stiamo utilizzando Selenium, è uno strumento geniale. Ma sto affrontando qualche problema nel sollevare eventi con Selenium.Selenium RC e eventi di controllo input

Scenario: Ho una casella di testo che si aspetta + valore ve e segnala un errore (javascript) quando si immette qualsiasi valore -ve e si preme tab da quella casella di testo o si fa clic all'esterno in qualsiasi punto della pagina.

Funziona perfettamente con l'interazione dell'utente normale con il sito Web ma quando si utilizza il selenio non sono in grado di ottenere questo comportamento. Inserisco del testo con Selenium.Type ('elementId', - valore ve), l'evento non viene generato e l'errore non si presenta.

Ho provato a utilizzare FireEvent ("textboxId", "blur") ma non funziona. L'unica soluzione è Focus sulla casella di testo, aggiungere un valore, utilizzare FireEvent ("textbox", "blur") e quindi Focus su un'altra casella di testo.

Qualcuno ha qualche idea per risolvere questo?

risposta

1

La soluzione alternativa non sembra una cattiva opzione. Quando si mette a fuoco il campo, quindi modificare il contenuto e quindi si sfoca (messa a fuoco in altri campi) è esattamente la stessa interazione che l'utente fa.

Un'alternativa diversa (preferisco ancora quella che si concentra su un altro campo) consiste nell'utilizzare getEval per attivare la funzione javascript che convalida il campo. È possibile controllare questo tutorial su come farlo: http://www.theautomatedtester.co.uk/seleniumtraining/Selenium_JavaScript.htm

4

sono stato in grado di ottenere questo lavoro con il client Java in Selenio RC chiamando

  • tipo ("id = textboxid", "newValue");

e poi

  • fireEvent ("id = textboxid", "sfocatura");

Hai ricevuto qualche indicazione sul fatto che l'evento "sfocatura" fosse stato attivato? Mi chiedo se forse il localizzatore non ha funzionato correttamente per far scoppiare l'evento.

Quali piccoli trucchi è necessario tirare per farlo funzionare, per evitare di farlo per ogni campo, è necessario o avvolgere le chiamate 2-3 in una funzione se si utilizza un client RC o register some user extensions per farlo in un unico passaggio se stai usando l'IDE Selenium.

0

"Sfocatura" è una grande scoperta! Grazie.

Il mio problema era un po 'diverso. Ecco come ho usato "blur" per un elenco a discesa (padre) che non stava postando indietro per compilare un secondo elenco a discesa (figlio) (ad esempio, stato e contea).

  1. Selenium.Focus ("id = drpdwnState");
  2. Selenium.Select ("id = drpdwnState", "label = Michigan");
  3. Selenium.FireEvent ("id = drpdwnState", "blur");
  4. Selenium.Focus ("id = drpdwnCounty");
  5. Selenio.Selezionare ("id = drpdwnCounty", "label = Grand Traverse");

Spero che questo aiuti qualcuno. Cheers!

Problemi correlati