Selenium 3个带3个问号的搜索框,Sikuli未能单击第2个元素

Selenium 3个带3个问号的搜索框,Sikuli未能单击第2个元素,selenium,sikuli,Selenium,Sikuli,我有3个搜索框字段,每个搜索框附近有3个问号。如果我尝试单击第二个问号,它总是单击第二个搜索框,而不是单击问号按钮[Sikuli未点击确切的元素]请查看我所附的下图。单击“”以查看图像。。。请不要提出坐标。我不应该在我的项目中使用坐标 好吧,这可能不是完全限定的答案,它没有像您所期望的那样使用区域、坐标和自动坐标 这是Sikuli中使用findAll()方法的代码 我根据您的屏幕截图创建了一个虚拟窗口,如下所示: 编辑 public void clickButton() throws AWTE

我有3个搜索框字段,每个搜索框附近有3个问号。如果我尝试单击第二个问号,它总是单击第二个搜索框,而不是单击问号按钮[Sikuli未点击确切的元素]请查看我所附的下图。单击“”以查看图像。。。请不要提出坐标。我不应该在我的项目中使用坐标

好吧,这可能不是完全限定的答案,它没有像您所期望的那样使用区域、坐标和自动坐标

这是Sikuli中使用
findAll()
方法的代码

我根据您的屏幕截图创建了一个虚拟窗口,如下所示:

编辑

public void clickButton() throws AWTException, FindFailed
{
    m_sikscr=new SikuliScript();
    m_screen=new Screen();
    m_sikscr.switchApp("Java Swing Examples");
    m_screen.wait((double)3.0);
    int i=0;
    Match[] array=new Match[5];
    Iterator<Match> rs1 = m_screen.findAll(new Pattern("./img/Button1.png"));
    while(rs1.hasNext())
    {
        array[i]=rs1.next();
        i++;
    }

    m_screen.click(array[1]);
            
}
public void clickButton()引发AWTException,FindFailed
{
m_sikscr=新的SikuliScript();
m_屏幕=新屏幕();
switchApp(“Java Swing示例”);
m_屏幕等待((双)3.0);
int i=0;
Match[]数组=新匹配[5];
迭代器rs1=m_screen.findAll(新模式(“./img/Button1.png”);
while(rs1.hasNext())
{
数组[i]=rs1.next();
i++;
}
m_屏幕。单击(数组[1]);
}
这仅单击屏幕上的第二个按钮


希望这一点能激发人们的想法,让它完全发挥作用。

如果你正在使用硒,为什么要担心Sikuli会发现类似的元素呢。您正在处理的是web应用程序的模式对话框吗?请发布相关代码。有了现在提供的信息,很难找出问题所在。是的,这是一个模式对话框,如果它是一个警报或子窗口,我可以轻松地自动执行。当我与开发人员进行了一次演练时,他们告诉我它是由ShowModalDialogBox(arg1、arg2、arg3)开发的。如果有任何其他方法来处理selenium中的ModalDialog Box,请务必让我知道。但是请确保我们不使用AutoIT、Robot类和Corodinates。@Striker:我不应该在这里发布我的代码:'(非常抱歉:(@mk08:?)还有其他方法吗?您好,非常感谢您提供的示例代码。但问题是我在while循环中使用它,所以它只是发送“文本”但我的座右铭是只点击第二个问号按钮(很多次:)将尝试并返回给您:)