2010-06-29 21 views
16

Ich muss eine Registerkarte Tastendruck in Selenium RC simulieren, die Java-API verwenden.Simulieren Sie TAB Tastendruckereignis in Selen RC

Ich tue dies nach einigen Text eingegeben haben, mit:

selenium.type(input, "mytext"); 

I 3 Alternativen versucht haben, die Registerkarte Funktion zu erhalten:

selenium.keyPress(input, "\\9"); 

und:

selenium.focus(input); 
selenium.keyPressNative("09"); 

und sogar:

selenium.getEval("var evt = window.document.createEvent('KeyboardEvent');evt.initKeyEvent ('keypress', true, true, window,0, 0, 0, 0,0, 9,0);window.document.getElementsByTagName('input')[2].dispatchEvent(evt);") 

Das Beste, was ich bekommen kann, ist ein „Tab Raum“ nach meinem Text eingefügt werden, damit ich mit diesem in das Eingabefeld am Ende:

"mytext " 

Was ich will, ist eigentlich auf die Registerkarte auf die nächste Steuer . Irgendwelche Hinweise? Vielen Dank!

(Anmerkung: Ich Tab verwenden müssen und Fokus nicht keine Vorschläge gehen, aus verschiedenen Gründen, so entlang dieser Linien bitte verwenden können, oder wählen Sie das Element Ich möchte gewählt)

Antwort

4
selenium.keyPressNative(java.awt.event.KeyEvent.VK_TAB + ""); 

I Verwenden Sie nicht die Java API, aber this post von Google Groups schlägt vor, dass es Ihre Lösung ist. Ich kann mir nicht vorstellen, dass "9" sich in Ihrer Frage von "09" unterscheidet, aber versuchen Sie es?

+0

09 oder 9, macht keinen Unterschied Ich habe Angst. – Joel

+0

Was passiert, wenn Sie nicht zuerst fokussieren? d.h.einfach Tab durch das Formular, dann geben Sie etwas am Ende (ich sage nicht, dass dies Ihr Problem lösen wird, nur neugierig) – Ryley

+1

Ich fand es notwendig, zu fokussieren und dann Tab, um eine Unschärfe auszulösen. – Upperstage

2

Versuchen Sie, die offizielle TAB char: \t oder \u0009

+1

nein, versucht, dass bereits – Joel

+1

@Joel: Bitte aktualisieren Sie die Frage, um es zu erwähnen. Ich sehe '\ t' nirgends dort. –

1

Improvising Ryley Antwort können wir

verwenden
selenium.keyDownNative(java.awt.event.KeyEvent.VK_TAB + ""); 
selenium.keyUpNative(java.awt.event.KeyEvent.VK_TAB + ""); 

Ich habe diese Methode für VK_CONTROL in IE versucht und es hat gut funktioniert.

0

Verwendung typeKeys():

den Link oben Zitiert:

Im Gegensatz zum einfachen „Typ“ Befehl, der den angegebenen Wert in der Seite zwingt direkt mit diesem Befehl hat oder keine sichtbare Wirkung kann auch in Fällen, in denen Tipptasten normalerweise eine sichtbare Wirkung haben würden. Wenn Sie beispielsweise "typeKeys" für ein Formularelement verwenden, sehen Sie möglicherweise die Ergebnisse dessen, was Sie in das Feld eingegeben haben, oder auch nicht.

In einigen Fällen müssen Sie möglicherweise den einfachen "type" -Befehl verwenden, um den Wert des Feldes festzulegen, und dann den "typeKeys" -Befehl, um die Tastenanschlagsereignisse zu senden, die dem entsprechen, was Sie gerade eingegeben haben.