2017-02-22 63 views
-2

考虑可能是最简单的代码:如何自动化Swing对话框上的响应?

//getDialogResponse() cannot be changed. 
public static int getDialogResponse() { 
    return JOptionPane.showConfirmDialog(null, "Make a really important choice.", "THE CHOICE", JOptionPane.YES_NO_CANCEL_OPTION); 
} 

public static void main(String[] args) { 
    int[] val = new int[1]; 
    SwingUtilities.invokeLater(() -> {val[0] = getDialogResponse();}); 
    //TODO: The program itself presses the 'Yes' button. 
    if(val[0] == JOptionPane.YES_OPTION) System.out.println("Good Choice."); 
    else System.out.println("Wise guy, huh?!"); 
} 

Robot似乎不合身,因为它需要知道新创建的对话框的位置,如果每次是不是在同一个位置,它将无法工作,所以我需要知道如何获取按钮本身的位置,或者我需要知道不依赖于新创建的对话框位置的方法。

此外,我不能更改getDialogResponse()代码:这是一个不变量。

那么我该怎么办?

+0

为什么在不能点击的情况下首先显示面板? –

+0

@MariusK。这是用于单元测试的目的。通常情况下,用户会* *能够点击它,但我需要一段代码来自动点击按钮对我来说,这样的测试可以验证所产生的行为是正确的。 – Xirema

+0

也许这可能有助于http://stackoverflow.com/questions/2730044/closing-a-dialog-created-by-joptionpane-showoptiondialog – Massimo

回答

0

Sikuli支持查找对话框/按钮并以自动方式点击它们。也许它会帮助你。