Как отправить "Ctrl + C" в Сикули? - PullRequest
21 голосов
/ 14 июня 2011

Такое ощущение, что это должно быть довольно легко, но я не могу найти документацию о том, как это сделать:

Я просто хочу, чтобы Sikuli набрал Ctrl + C , чтобы скопировать текст в буфер обмена.

type(KEY_CTRL+'c') не работает и не работает type(KEY_CTRL,'c').

Есть предложения?

Ответы [ 10 ]

23 голосов
/ 15 июня 2011

Попробуйте использовать type("c",KEY_CTRL) вместо этого.

Я написал простой скрипт, который набирает строку в блокноте, дважды щелкает ее, чтобы пометить, а затем снова нажимает ctrl + x ctrl + v в документе. Работает отлично.

openApp("notepad.exe")

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

type("x", KEY_CTRL)

click("theTextField.png" )
type("v",KEY_CTRL)
18 голосов
/ 02 марта 2012

Следующее работает в 0.9 и более новых версиях

type('x', KeyModifier.CTRL)
5 голосов
/ 31 мая 2013

Ключевые объекты определены практически для всех клавиш-модификаторов и цифровых клавиш. В любом случае, это должно выглядеть примерно так

keyDown (Key.CTRL)
тип ('c')
KeyUp (Key.CTRL)

4 голосов
/ 27 декабря 2012

Использование type () и возможные имена ключей задокументированы здесь:

1 голос
/ 01 февраля 2017

Как уже упоминали другие, используйте следующее:

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

Стоит упомянуть одно замечание - используйте , а не используйте символы верхнего регистра, то есть:

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

Я не изучал исходный код Sikuli, но, скорее всего, он неявно отправляет его как Shift+C, что приводит к совершенно другой команде.

1 голос
/ 01 июля 2013

type ('x', Key.CTRL) также работает.

0 голосов
/ 09 июня 2017

У меня было требование автоматизировать флэш-контент. Следующий код работал для меня. Это были следующие шаги, которые я должен выполнить как часть автоматизации:

  1. Введите имя пользователя и пароль
  2. Нажмите на кнопку входа
  3. Нажмите на кнопку, чтобы перейти к приложению

Задача, с которой я столкнулся, заключалась в том, чтобы сосредоточиться на имени пользователя и пароле, которые не содержали заполнителей. Следовательно, фокусировка была трудной. Поэтому я использовал клавиши CTRL для этого.

    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 голосов
/ 23 сентября 2016

Сценарий такой, как будто мне нужно нажать, скажем, клавишу E на моей клавиатуре после завершения теста, как добавить это в сценарий в Sikuli IDE.

0 голосов
/ 16 марта 2014

Вы можете попробовать следующий код:

keyDown(Key.CTRL)
type("c")
keyUp(Key.CTRL)
0 голосов
/ 07 ноября 2013

Также убедитесь, что NUM_LOCK выключен.Если NUM_LOCK включен, он может что-то сделать с KeyModifier.CTRL или KeyModifier.SHIFT.

...