I tasti del tipo di selenio rimuovono il punto dalla stringa digitata
Domanda
Le seguenti istruzioni
Selenium.typeKeys("location", "gmail.com");
digita la stringa gmailcom
invece di gmail.com
.
Cosa sta succedendo lì?
Dai commenti:
Sto cercando di simulare il riempimento automatico e l'unico modo per farlo attualmente sul selenio è combinare tipo e tipoKey. ad esempio:
selenium.type("assigned_to", split[0]+"@");
selenium.typeKeys("assigned_to", "gmail.com");
Ora la mia domanda è: perché typeKeys non digita il 'punto' tra gmail.com?
Soluzione
Hai provato a usare le funzioni dei tasti nativi e codici char javascript ? Non sono riuscito a far funzionare un carattere "punto" usando loro (carattere 190), ma ho ottenuto il decimale (carattere 110) per funzionare bene, e la casella di testo non dovrebbe avere problemi con nessuno dei due.
selenium.Focus("assigned_to");
selenium.Type("assigned_to", split[0]+"@");
selenium.TypeKeys("assigned_to", "gmail");
selenium.KeyPressNative("110");
selenium.TypeKeys("assigned_to", "com");
Altri suggerimenti
Utilizza il metodo type
.
Dal javadoc per le macchine da scrivere :
questo comando può o meno averne uno effetto visibile, anche nei casi in cui i tasti di battitura normalmente avrebbero a effetto visibile
...
In alcuni casi, è possibile è necessario utilizzare il semplice "tipo" comando per impostare il valore del campo e quindi i tasti "typeKeys" comando per inviare il file sequenze di tasti corrispondenti a cosa hai appena digitato.
Abbiamo avuto problemi simili utilizzando le tasti di scelta rapida in selenio python.
Una soluzione alternativa che abbiamo pensato per risolvere questo problema è quella di utilizzare la combinazione di 'type' e 'type_keys'. Come forse saprai, il tipo non presenta tali problemi.
Lo abbiamo fatto nel nostro script di selenio in pitone e funziona perfettamente.
Ad esempio: Se è presente un indirizzo e-mail da inserire in una casella di testo: test.me@test.me.uk
Quindi
type(locator,’test.me@test.me.’)
type_keys(locator,’uk’)
Forse un modo molto grezzo di fare, ma ha fatto il suo lavoro.
Spero che questo aiuti qualcun altro con un problema simile.
Prova anche a mettere a fuoco l'elemento prima di scriverlo.
selenium.focus(locator);
selenium.typeKeys(locator, value);
ha funzionato nel mio caso, gestendo un input type = password.
Supponiamo che la stringa da digitare usando typeKeys
sia " abc.xyz.efg " ;. Quindi, possiamo usare i comandi type
e typeKeys
per scrivere la stringa data.
type(locator,"abc.xyz.")
typeKeys(locator,"efg")
I due passaggi precedenti sono utili ogni volta che si desidera selezionare un elemento nella casella a discesa e il menu a discesa viene visualizzato solo se si utilizza il comando typeKeys.
Vedo anche questo comportamento quando uso Selenium RC (C #) e con caratteri diversi ('y' per esempio che sembra anche rimuovere il personaggio seguirlo dall'azione di battitura ..)
Per alcune situazioni è del tutto possibile aggirare il problema digitando i tasti con le funzioni TypeKeys o KeyPress, ma non sono riuscito a trovare una soluzione che funzioni quando si desidera digitare il testo in un campo, immettere caratteri di controllo ([Enter] o una nuova riga, ad esempio), quindi digitare più testo .. (utilizzando la funzione 'Tipo' in questo caso, semplicemente sovrascrive il contenuto del campo ...).
Se qualcuno riesce a trovare una soluzione ragionevole a questo problema, si prega di aggiungerlo a questa domanda in quanto sta iniziando a venire su google ora e probabilmente aiuterebbe molte persone fuori .. (Avrei iniziato una generosità se potessi ..)
Questo è un bug aperto nel selenio (bug SEL-519 ).
Dopo averci armeggiato, sono finalmente riuscito a inserire '.' in una textarea utilizzando JavaScript. Esegui qualcosa come window.document.getElementById ('assegnato_to'). Valore + = '.'
tramite storeEval
o simili.
Ho ottenuto lo stesso comportamento ma l'ho risolto passando una variabile al comando Type anziché una stringa.
string email = @"name@gmail.com";
selenium.Type(inputfield, email);
Funziona come un fascino!