【问题标题】:Sikuli keyword to press Windows key + uparrow keys togetherSikuli键盘同时按下Windows键+向上箭头键
【发布时间】:2018-09-16 04:23:46
【问题描述】:

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

【问题讨论】:

    标签: robotframework sikuli


    【解决方案1】:

    我不认为在当前的 robotsframework-sikulilibrary 发行版中,您可以将多个参数传递给“按特殊键”关键字。您可以做的是修改该关键字以按一个键或按一个键修饰符和另一个键,例如:在您的情况下为 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。 (我不认为我可以通过修改“按特殊键”关键字来分发我的库版本)

    【讨论】:

      【解决方案2】:

      你可以试试这个方法:

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

      【讨论】:

        【解决方案3】:

        是这样的:

        type(Key.UP, KeyModifier.WIN)

        【讨论】:

          最近更新 更多