2011-06-13 14 views
20

questo si sente come dovrebbe essere abbastanza facile, ma non riesco a trovare la documentazione su come fare questo:Come inviare "Ctrl + c" in Sikuli?

Voglio solo Sikuli per digitare Ctrl +C per copiare il testo negli appunti.

type(KEY_CTRL+'c') non funziona e nemmeno type(KEY_CTRL,'c').

Qualche suggerimento?

risposta

20

Provare a utilizzare type("c",KEY_CTRL) invece.

Ho scritto un semplice script che digita una riga nel blocco note, doppio clic per contrassegnarlo e quindi ctrl + x ctrl + v nuovamente nel documento. Funziona alla grande.

openApp("notepad.exe") 

find("textfield.png") 
type("Some text") 
doubleClick("theText.png") 

type("x", KEY_CTRL) 

click("theTextField.png") 
type("v",KEY_CTRL) 
+1

Che era, (KEY_CTRL, 'c') non funziona ma ('c', KEY_CTRL) fa, vai figura! –

+2

[deprecated] (http://doc.sikuli.org/keys.html) dalla versione X1.0-rc3. Vedi [la risposta di @spearson] (http://stackoverflow.com/a/9526380/1086034). – willkil

17

le seguenti opere in 0.9 e versioni più recenti di

type('x', KeyModifier.CTRL) 
+2

Si noti che è sensibile al maiuscolo/minuscolo! 'x' e 'c' funzionano, ma 'X' e 'C' no! –

5

Gli oggetti chiave sono definiti per quasi tutti i tasti di modifica e tastierino numerico. In ogni modo, dovrebbe essere simile a questo

keyDown (Key.CTRL)
tipo ('c')
keyUp (Key.CTRL)

+0

Funziona ma prende 3 righe quando solo una riga è sufficiente 'type ('x', KeyModifier.CTRL)' –

+0

è utile quando vuoi che una parte del tuo programma gestisca l'eliminazione dei modificatori e un'altra parte che gira intorno alla sua allegra a proposito, un sapere se il tasto è premuto o non sono attualmente – Belfordz

0

Inoltre, assicurarsi che NUM_LOCK sia disattivato. Se NUM_LOCK è attivo, può creare problemi con KeyModifier.CTRL o KeyModifier.SHIFT.

+0

Num Lock non fa alcuna differenza per me. Hai visto questo problema su una piattaforma particolare? –

+1

@JonathanBenn, stavo usando Windows 7 Home Premium, Java 7 (aggiornamento 65), e Sikuli 1.0.1. – autoKarma

0

Si può provare codice successivo:

keyDown(Key.CTRL) 
type("c") 
keyUp(Key.CTRL) 
-1

Lo scenario è come ho bisogno di premere tasto E dire nella mia tastiera dopo aver terminato il test come aggiungere questo nello script in Sikuli IDE.

1

Come altri hanno detto, utilizzare il seguente:

type('c', Key.CTRL) # Copy command 

Un punto degno di nota - fare non uso caratteri maiuscoli, vale a dire:

type('C', Key.CTRL) # Does not copy, avoid this 

Non ho guardato in il codice sorgente Sikuli, ma la mia ipotesi migliore è che invii implicitamente questo come Shift+C, il che comporta un comando completamente diverso.

0

Avevo l'obbligo di automatizzare un contenuto flash. Il seguente codice ha funzionato per me. Questi erano i seguenti passi che ho AHD per eseguire come parte dell'automazione:

  1. inserire username e password
  2. Cliccare sul pulsante Login
  3. Fare clic sul pulsante che passare alla applicazione

La sfida che dovevo affrontare era concentrarsi su Username e password che non avevano segnaposto. Quindi la messa a fuoco era difficile. Quindi ho usato i tasti CTRL per farlo.

Pattern appLogo = new Pattern("C:\\images\\appLogo.png"); 
    StringSelection userNameText = new StringSelection("username");    
    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(userNameText, null);//Copy the text into the memory 
     Screen s = new Screen(); 
      s.find(appLogo); 
      s.click(appLogo); 
      s.type(Key.TAB);//I had to enter tab twice to focus on user name textbox 
      s.type(Key.TAB); 
      s.type("V",KeyModifier.CTRL); 

      StringSelection password = new StringSelection("password");    
      Toolkit.getDefaultToolkit().getSystemClipboard().setContents(password, null); 
      s.type(Key.TAB);//I had to enter tab twice to focus on user name textbox 
      s.type("V",KeyModifier.CTRL); 

      Pattern loginButton = new Pattern("C:\\images\\Login.png"); 
      s.find(loginButton); 
      s.doubleClick(loginButton);