如何使用sikuli和java单击屏幕上多次出现的图像?

如何使用sikuli和java单击屏幕上多次出现的图像?,java,testing,automation,sikuli,gui-testing,Java,Testing,Automation,Sikuli,Gui Testing,我正在用java编写一些脚本自动化,它搜索一些录音中的手机号码,并在gridview中找到多个录音。接下来,我尝试通过单击下载(多个)按钮下载所有录音。 我写了下面的代码,但不工作 public static Screen s = new Screen(); Iterator <Match> matches =s.findAll("downloadbtn_wh.png"); // s is screen Pattern pButton = new Pattern("download

我正在用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;
    }
}
公共静态屏幕s=新屏幕();
迭代器匹配=s.findAll(“downloadbtn_wh.png”);//s是屏幕
Pattern pButton=新模式(“downloadbtn_wh.png”);
匹配姆布顿;
while(匹配.hasNext()){
Match m=matches.next();//现在可以通过调试检查m
s、 单击(m);//单击下拉列表
如果((mButton=s.exists(pButton))!=null){
//检查按钮图像并保存匹配项
s、 单击(mButton);//只需单击匹配项,不再搜索
打破
}
}
这个脚本在单击第一个下载按钮后停止,但我希望它应该单击gridview中的每个下载按钮。
以下代码将执行您所需的操作

@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);
    }
}
@测试
public void multiplePattern()抛出失败{
ImagePath.setBundlePath(“C:\\patterns\\”;
屏幕s=新屏幕();
迭代器it=s.findAll(“downloadArrow.png”);
while(it.hasNext()){
it.next().高亮显示(1);
}
}
注意:请注意,在上面的示例中,我并没有实际单击,而只是突出显示检测到的模式,以便可视化过程。在脚本中使用它之前,只需将突出显示(1)替换为
click()

Screen scn=new Screen();
Screen scn = new Screen();  
Iterator <Match> itr = scn.findAll("image");
{
    while(itr.hasNext())
    {
        itr.next().click();
    }
}
迭代器itr=scn.findAll(“图像”); { while(itr.hasNext()) { itr.next()。单击(); } }
成功了!!!!!谢谢尤金!!!!!!添加了click()而不是highlight():)@Steve很高兴听到这有帮助。请接受我的回答。@Steve接受回答不需要任何名声。只有当你想对某个问题或答案投上或下一票时,声誉才是必需的。仅仅发布一些代码并不是问题的答案。请编辑您的问题并在代码中添加解释。