Как отправить Ctrl+c в сикули?

Похоже, это должно быть довольно просто, но я не могу найти документацию о том, как это сделать:

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

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

Какие-либо предложения?


person Dave S    schedule 13.06.2011    source источник


Ответы (10)


Попробуйте вместо этого использовать 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)
person Jompa234    schedule 14.06.2011
comment
Вот и все, (KEY_CTRL, 'c') не работает, но ('c', KEY_CTRL) работает, поймите! - person Dave S; 15.06.2011
comment
Устарело, начиная с версии X1.0-rc3. См. ответ @spearson. - person willkil; 22.12.2012

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

type('x', KeyModifier.CTRL)
person spearson    schedule 02.03.2012
comment
Обратите внимание, что это чувствительно к регистру! «x» и «c» работают, а «X» и «C» — нет! - person Jonathan Benn; 19.08.2015

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

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

person Belfordz    schedule 31.05.2013
comment
Это работает, но занимает 3 строки, когда достаточно только 1 строки type('x', KeyModifier.CTRL) - person Jonathan Benn; 19.08.2015
comment
это полезно, когда вы хотите, чтобы одна часть вашей программы управляла нажатием модификаторов, а другая часть шла своим веселым путем, не зная, нажата ли кнопка в данный момент или нет - person Belfordz; 14.11.2015

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

person RaiMan    schedule 27.12.2012

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

person user2524670    schedule 01.07.2013

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

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

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

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

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

person robyaw    schedule 01.02.2017

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

person autoKarma    schedule 07.11.2013
comment
Num Lock для меня не имеет никакого значения. Вы видели эту проблему на определенной платформе? - person Jonathan Benn; 19.08.2015
comment
@JonathanBenn, я использовал Windows 7 Home Premium, Java 7 (обновление 65) и Sikuli 1.0.1. - person autoKarma; 26.08.2015

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

keyDown(Key.CTRL)
type("c")
keyUp(Key.CTRL)
person Paul Hurski    schedule 16.03.2014

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

  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);
person user3363458    schedule 09.06.2017

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

person Bharadwaj    schedule 23.09.2016