web-dev-qa-db-fra.com

Comment envoyer "Ctrl + c" en Sikuli?

Cela semble être assez facile, mais je ne trouve pas de documentation sur la façon de procéder:

Je veux juste que Sikuli tape Ctrl+C copier du texte dans le presse-papier.

type(KEY_CTRL+'c') ne fonctionne pas et type(KEY_CTRL,'c').

Aucune suggestion?

21
Dave S

Essayez d'utiliser type("c",KEY_CTRL) à la place. 

J'ai écrit un script simple qui tape une ligne dans le bloc-notes, double-clique dessus pour le marquer, puis ctrl + x ctrl + v dans le document. Fonctionne très bien. 

openApp("notepad.exe")

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

type("x", KEY_CTRL)

click("theTextField.png" )
type("v",KEY_CTRL)
23
Jompa234

Ce qui suit fonctionne dans les versions 0.9 et plus récentes de sikuli

type('x', KeyModifier.CTRL)
17
spearson

Les objets clés sont définis pour à peu près toutes les touches de modification et les touches du pavé numérique. Quoi qu'il en soit, cela devrait ressembler à quelque chose comme ça

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

5
Belfordz

L'utilisation de type () et les noms de clé possibles sont documentés ici:

4
RaiMan

type ('x', Key.CTRL) fonctionne également.

1
user2524670

Comme d'autres l'ont mentionné, utilisez ce qui suit:

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

Un point qui mérite d’être mentionné - faites pas utilisez des majuscules, c’est-à-dire:

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

Je n'ai pas examiné le code source de Sikuli, mais la meilleure hypothèse est qu'il l'envoie implicitement sous la forme Shift+C, ce qui entraîne une commande totalement différente.

1
robyaw

Assurez-vous également que NUM_LOCK est désactivé. Si NUM_LOCK est activé, tout ce qui se passe avec KeyModifier.CTRL ou KeyModifier.SHIFT peut être incorrect.

0
autoKarma

Vous pouvez essayer le code suivant:

keyDown(Key.CTRL)
type("c")
keyUp(Key.CTRL)
0
Paul Hurski

J'avais besoin d'automatiser un contenu flash. Le code suivant a fonctionné pour moi . Ce sont les étapes suivantes que j’ai pu effectuer dans le cadre de l’automatisation:

  1. Entrez le nom d'utilisateur et le mot de passe
  2. Cliquez sur le bouton de connexion
  3. Cliquez sur le bouton pour accéder à l'application.

Le défi auquel j'ai dû faire face était de me concentrer sur le nom d'utilisateur et le mot de passe, qui n'avaient aucun espace réservé. Par conséquent, la mise au point était difficile. J'ai donc utilisé les touches CTRL pour le faire.

    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);
0
user3363458