Как отправить "Ctrl + c" в Сикули?
Похоже, это должно быть довольно легко, но я не могу найти документацию о том, как это сделать:
Я просто хочу, чтобы Sikuli напечатал Ctrl + C, чтобы скопировать текст в буфер обмена.
type(KEY_CTRL+'c')
не работает, а также type(KEY_CTRL,'c')
.
Любые предложения?
Ответы
Ответ 1
Попробуйте вместо этого использовать type("c",KEY_CTRL)
.
Я написал простой script, который вводит строку в блокнот, дважды щелкает ее, чтобы пометить ее, а затем 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)
Ответ 2
Ниже приведено описание более поздних версий sikuli
type('x', KeyModifier.CTRL)
Ответ 3
Использование типов() и возможных имен ключей описано здесь:
Ответ 4
Ключевые объекты определены для почти всех клавиш-модификаторов и клавиш num pad. В любом случае, он должен выглядеть примерно так.
keyDown (Key.CTRL)
тип ('c')
KeyUp (Key.CTRL)
Ответ 5
type ('x', Key.CTRL) также работает.
Ответ 6
Как уже упоминалось, используйте следующее:
type('c', Key.CTRL) # Copy command
Один вопрос, который стоит упомянуть - не используйте символы верхнего регистра, т.е.:
type('C', Key.CTRL) # Does not copy, avoid this
Я не изучал исходный код Sikuli, но я думаю, что он неявно отправляет это как Shift+C
, что приводит к другой команде полностью.
Ответ 7
Кроме того, убедитесь, что NUM_LOCK выключен. Если NUM_LOCK включен, он может сделать что-либо с KeyModifier.CTRL или KeyModifier.SHIFT неправильно.
Ответ 8
Вы можете попробовать следующий код:
keyDown(Key.CTRL)
type("c")
keyUp(Key.CTRL)
Ответ 9
У меня было требование автоматизировать flash-контент. Следующий код работал у меня.
Это были следующие шаги, которые я выполнил как часть автоматизации:
- Введите имя пользователя и пароль
- Нажмите кнопку входа в систему
- Нажмите кнопку, которая перейдет к приложению
Задача, с которой я столкнулась, заключалась в том, чтобы сосредоточиться на имени пользователя и пароле, у которого не было заполнителей. Следовательно, фокусировка была сложной. Поэтому я использовал клавиши 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);
Ответ 10
Сценарий похож на то, что мне нужно нажать клавишу E на моей клавиатуре после завершения теста, как добавить это в script в SICULI IDE.