这感觉应该很容易,但我找不到有关如何执行此操作的文档:
我只想让 Sikuli 输入Ctrl+C以将文本复制到剪贴板。
type(KEY_CTRL+'c')
不起作用,也没有type(KEY_CTRL,'c')
。
有什么建议么?
尝试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)
以下适用于 0.9 和更新版本的sikuli
type('x', KeyModifier.CTRL)
几乎所有修饰键和数字键盘键都定义了键对象。无论如何,它应该看起来像这样
keyDown(Key.CTRL)
type('c')
keyUp(Key.CTRL)
此处记录了 type() 的用法和可能的键名:
type('x', Key.CTRL) 也可以。
正如其他人所提到的,请使用以下内容:
type('c', Key.CTRL) # Copy command
值得一提的一点 - 不要使用大写字符,即:
type('C', Key.CTRL) # Does not copy, avoid this
我没有查看 Sikuli 源代码,但我最好的猜测是它隐式地将 this 发送为Shift+C
,这会导致完全不同的命令。
此外,请确保 NUM_LOCK 已关闭。如果 NUM_LOCK 处于打开状态,它可以使任何使用 KeyModifier.CTRL 或 KeyModifier.SHIFT 的行为异常。
您可以尝试下一个代码:
keyDown(Key.CTRL)
type("c")
keyUp(Key.CTRL)
我需要自动化 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);
这种情况就像我需要在完成测试后按键盘上的说键 E 如何在 Sikuli IDE 的脚本中添加它。