如何使用带有 java 的 sikuli 单击在屏幕上多次出现的某些图像?

How to click on some image which occurs multiple times on screen with sikuli with java?

我正在 java 中编写一些脚本自动化,它在一些录音中搜索手机号码并在 gridview 中找到多个录音。在此旁边,我试图通过单击下载(多个)按钮来下载所有录音。 我写了下面的代码但不起作用

public static Screen s = new Screen();
Iterator <Match> matches  =s.findAll("downloadbtn_wh.png"); // s is screen
Pattern pButton = new Pattern("downloadbtn_wh.png");

Match mButton;

while (matches.hasNext()) {
    Match m = matches.next(); // m now could be inspected with debugging
    s.click(m); // click on drop-down

    if ((mButton = s.exists(pButton))!=null) {
        // checks for button image and saves the match
        s.click(mButton); // just click the match, do not search again
        break;
    }
}

此脚本在单击第一个下载按钮后停止,但我希望它应该单击 gridview 中的每个下载按钮。 Images

下面的代码将执行您的要求。

@Test
public void multiplePattern() throws FindFailed{

    ImagePath.setBundlePath("C:\patterns\");

    Screen s = new Screen();
    Iterator<Match> it = s.findAll("downloadArrow.png");

    while(it.hasNext()){

        it.next().highlight(1);
    }
}

注意:请注意,在上面的示例中,我实际上并没有点击,而只是突出显示检测到的模式,只是为了可视化该过程。在脚本中使用之前,只需将 highlight(1) 替换为 click()

Screen scn = new Screen();  
Iterator <Match> itr = scn.findAll("image");
{
    while(itr.hasNext())
    {
        itr.next().click();
    }
}