1

我真的很挣扎

if mImg1 or mImg2:

如果出现 2 张图像中的 1 张,我正在尝试监视设定的时间。如果确实如此,那么它将执行所需的操作。我只是无法获得正确的语法来执行上面的 IF 语句。

如果其中一个不为空,那么我希望它打破循环。如果没有,则继续循环。

weWait = 10
while weWait > 0:
 mImg1 = exists("1379615300466.png",1)
 mImg2 = exists("1379534637993.png",1)
 print mImg1
 print mImg2
  if mImg1 or mImg2:
   print "breaking"
   break
  wait (1)
  weWait = weWait - 1

if not (mImg1 and mImg2):
  print "niether image appeared"
  exit(1)

if mImg2:
  print "img2 appeared"
  exit(1)

if mImg1:
print "img1 appeared"
exit(1)

我是一名爱好者,并为不正确的术语道歉。

提前致谢。

4

5 回答 5

2

如果 mImg1 或 mImg2 != Null:未定义 null。太令人沮丧了。希望我更好!

在 Jython 脚本中,您应该使用

if mImg1 != None or mImg2 != None: 
于 2013-09-26T10:16:54.253 回答
2

您可以通过使用以下方法来实现这一点,只需调用此方法并将图像名称作为参数发送即可。

  /**
  * Check and verify the image using Sikuli-Script
  */
 public boolean  verifyImageExists(String imageName){

     boolean isValid = false;
     try {
            Screen screen = new Screen();
            Pattern image = new Pattern(AppConstant.RESOURCE_DIR+imageName);
            //Wait 10ms for image 

            try 
            {
                screen.wait(image, 10);
            } catch (FindFailed e1)
            {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            if(screen.exists(image)!= null)
            {
                isValid = true;
            }
        }
        catch(Exception e){

        }
     return isValid;
 }
于 2016-08-11T10:11:32.300 回答
1

西库里 Java 代码:

import org.sikuli.script.FindFailed;
Screen screen = new Screen();
try{
    if(screen.exists("img1.png") != null || screen.exists("img2.png") != null){
        //DO YOUR ACTIONS
        screen.click("img1.png");
        }
    }
catch(FindFailed e){
    e.getStackTrace();
}

或者,您可以使用 TestNG 或 JUnit 进行断言,如下所示:

Match img1 = screen.exists("img1.png");
assertTrue(img1 != null);

对img2做同样的事情。

于 2015-05-07T11:42:05.847 回答
0

我现在这个话题有点老了,但我来到这里是因为我正在寻找相同的答案。
现在这个问题在这里没有得到真正的回答,所以我分享我的解决方案。

我所做的是,我使用“while True”来创建一个循环并查看图像是否已经可见。
如果是这种情况,我们对图像做一些事情并打破 while 循环。

示例代码:
(Sikuli 与 Python)

Image1 = ("image1.png")
Image2 = ("image2.png")
class Multi():
    def __init__(self):
        self.Search()
    def Search(self):
        # Look when one of the two images appear. 
        while True: 
            print('Searching....')
            if exists(Image1):
                print('Image1 located!')
                click(Image1)
                # Break loop.
                break
            elif exists(Image2):
                print('Image2 located!')
                click(Image2)
                # Break loop.
                break
            else:
                pass
# Run class 
Multi()
于 2015-01-27T10:22:02.120 回答
0

exists() 返回一个匹配对象。您应该检查它是否为空。检查它是否为空将返回真或假,可用于 if 语句的参数

于 2013-09-21T14:23:58.083 回答