Sikuli 关键字同时按下 Windows 键 + 上箭头键

Sikuli keyword to press Windows key + uparrow keys together

我是使用 sikuli 库的机器人框架的新手。我想使用 windows 键 + 向上箭头最大化应用程序 window。你能告诉我可用于同时按下 windows 键+向上箭头的关键字吗?查看 sikuli 库文档 http://rainmanwy.github.io/robotframework-SikuliLibrary/doc/SikuliLibrary.html#Press%20Special%20Key 我了解到有 press special key 关键字可以按键盘上的单个键。但问题是如何处理两个 keys.thanks.

你可以试试这个方法:

Screen screen = new Screen();
screen.type(Key.WIN, Key.UP);

我认为当前的 robotframework-sikulilibrary 发行版不能将多个参数传递给 'Press Special Key' 关键字。您可以做的是修改该关键字以按一个键或按一个键修饰符和另一个键,例如:在您的情况下为 WIN+UP。

这是你需要的库中的修改(robotframework-SikuliLibrary/src/java/com/github/rainmanwy/robotframework/sikulilib/keywords/ScreenKeywords.java):

    @RobotKeyword( "Presses a special keyboard key." 
            + "\n\n For a list of possible Keys view docs for org.sikuli.script.Key ."
            + "\n\n Example Usage:"
            + "\n | Double Click | textFieldWithDefaultText.png | "
            + "\n | Press Special Key | DELETE | ")
@ArgumentNames({"*keyConstant"})
public void pressSpecialKey(String... specialCharName) throws ScreenOperationException{
    try{
        if (specialCharName.length == 1){
            Object key =  Key.class.getField(specialCharName[0]).get(null);
            screen.type(key.toString());
        } else if ( specialCharName.length == 2){
            Object keyModifier =  Key.class.getField(specialCharName[0]).get(null);
            Object key =  Key.class.getField(specialCharName[1]).get(null);
            screen.type(key.toString(),keyModifier.toString());
        }
    }
    catch(ReflectiveOperationException e){
        throw new ScreenOperationException("No " +specialCharName.toString() + " in class org.sikuli.script.Key ");
    }
}

您还可以在这里做更多的事情。但这将满足您的目的,因为我将其与 WIN+UP 和 SHIFT+DELETE 结合使用来测试代码。

如何使用 Maven 构建您自己的 SikuliLibrary jar,查看 here。 (我不认为我可以通过 'Press Special Key' 关键字的修改来分发我的库版本)

是这样的:

type(Key.UP, KeyModifier.WIN)