2011-06-13 14 views
20

to czuje się jak powinno być dość łatwe, ale nie mogę znaleźć dokumentację na temat jak to zrobić:Jak wysłać "Ctrl + c" w Sikuli?

Chcę tylko Sikuli wpisać Ctrl + C skopiować tekst do schowka.

type(KEY_CTRL+'c') nie działa, podobnie jak type(KEY_CTRL,'c').

Wszelkie sugestie?

Odpowiedz

20

Zamiast tego spróbuj użyć type("c",KEY_CTRL).

Napisałem prosty skrypt, który wpisuje linię w notatniku, dwukrotnie ją klika, aby oznaczyć, a następnie ponownie ctrl + x ctrl + v do dokumentu. Działa świetnie.

openApp("notepad.exe") 

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

type("x", KEY_CTRL) 

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

To było to, (KEY_CTRL, "c") nie działa, ale ("c", KEY_CTRL) robi, idź rysunek! –

+2

[Przestarzałe] (http://doc.sikuli.org/keys.html) od wersji X1.0-rc3. Zobacz [odpowiedź @spearson] (http://stackoverflow.com/a/9526380/1086034). – willkil

17

następujące prace w 0,9 i nowsze wersje

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

Należy pamiętać, że wielkość liter ma znaczenie! "x" i "c" działają, ale "X" i "C" nie! –

5

Kluczowe obiekty są zdefiniowane praktycznie dla wszystkich klawiszy modyfikujących i klawiszy numerycznych. Tak czy inaczej, powinien on wyglądać tak

keyDown (Key.CTRL)
typ ('C')
keyUp (Key.CTRL)

+0

Działa to, ale zajmuje 3 linie, gdy tylko 1 wiersz wystarcza 'type ('x', KeyModifier.CTRL)' –

+0

jest użyteczny, gdy chcesz, aby jedna część twojego programu obsługiwała modyfikatory wypychania i inna część chodziła o jego wesoło sposób, nie wiedząc, czy przycisk jest wciśnięty, czy nie aktualnie – Belfordz

0

Upewnij się również, że NUM_LOCK jest wyłączony. Jeśli włączone jest NUM_LOCK, może zrobić wszystko przy użyciu KeyModifier.CTRL lub KeyModifier.SHIFT.

+0

Num Lock nie robi dla mnie żadnej różnicy. Czy widzisz ten problem na konkretnej platformie? –

+1

@ JonathanBenn, używałem Windows 7 Home Premium, Java 7 (aktualizacja 65) i Sikuli 1.0.1. – autoKarma

0

Można spróbować następny kod:

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

Scenariusz jest jak trzeba nacisnąć klawisz E powiedzieć w mojej klawiaturze po zakończeniu testu, jak dodać to w skrypcie w Sikuli IDE.

1

Jak wspominają inni, należy wykonać następujące czynności:

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

Jeden punkt warto wspomnieć - zrobić nie użytku wielkich liter znaków, a mianowicie:

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

ja nie spojrzał kod źródłowy Sikuli, ale domyślam się, że domyślnie wysyła to jako Shift+C, co powoduje całkowicie inne polecenie.

0

Musiałem zautomatyzować zawartość flash. Poniższy kod pracował dla mnie. Były to następujące kroki I AHD wykonać jako część automatyzacji:

  1. wprowadzić nazwę użytkownika i hasło
  2. Kliknij Login Button
  3. Kliknij na przycisk, który będzie poruszać się do stosowania

Wyzwaniem, przed którym stanęłam, było skupienie się na nazwie użytkownika i haśle, które nie zawierały elementów zastępczych. Dlatego koncentracja była trudna. Użyłem klawiszy CTRL, aby to zrobić.

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); 
Powiązane problemy