How to send “Ctrl + c” in Sikuli?
这感觉应该很简单,但我找不到有关如何执行此操作的文档:
我只想让Sikuli键入ctrl+c将文本复制到剪贴板。
有什么建议吗?
尝试使用
我写了一个简单的脚本,它在记事本中键入一行,双击它来标记它,然后再按ctrl+x ctrl+v将其再次输入到文档中。工作很好。
1 2 3 4 5 6 7 8 9 10 | openApp("notepad.exe") find("textfield.png" ) type("Some text") doubleClick("theText.png") type("x", KEY_CTRL) click("theTextField.png" ) type("v",KEY_CTRL) |
以下是Sikuli 0.9及更新版本的作品
1 | type('x', KeyModifier.CTRL) |
键对象是为几乎所有的修改键和num-pad键定义的。无论如何,它应该看起来像这样
keyDown(Key.CTRL)
type('c')
keyUp(Key.CTRL)
这里记录了type()的用法和可能的键名:
- http://doc.sikuli.org/region.html region.type
- http://doc.sikuli.org/keys.html key常量
如其他人所述,使用以下内容:
1 | type('c', Key.CTRL) # Copy command |
值得一提的是-不要使用大写字符,即:
1 | type('C', Key.CTRL) # Does not copy, avoid this |
我没有研究过Sikuli源代码,但我的最佳猜测是它隐式地将其作为
类型("x",key.ctrl)也可以工作。
我有一个自动化闪存内容的需求。以下代码对我有效。以下是作为自动化一部分执行的以下步骤:
我面临的挑战是关注没有占位符的用户名和密码。因此,对焦很困难。所以我用了ctrl键。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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); |
您可以尝试下一个代码:
1 2 3 | keyDown(Key.CTRL) type("c") keyUp(Key.CTRL) |
另外,确保num_锁已关闭。如果num_lock处于打开状态,则它可以使用keyModifier.ctrl或keyModifier.shift进行任何操作。
这个场景就像我需要在完成测试后按键盘上的say键e,如何在sikuli-ide的脚本中添加它。