1

ラインはかなり悩んでます

if mImg1 or mImg2:

2 つの画像のうちの 1 つが表示される場合、一定時間監視しようとしています。存在する場合は、目的のアクションを実行します。上記のIFステートメントを実行するための正しい構文を取得できません。

いずれかが null でない場合は、ループを中断します。そうでない場合は、ループを続けます。

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

これを実現するには、次のメソッドを使用します。このメソッドを呼び出して、イメージ名をパラメーターとして送信するだけです。

  /**
  * 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 に答える
0

このトピックはちょっと古いですが、同じ答えを探していたのでここに来ました。
質問はここでは実際には答えられないので、私の解決策を共有しています。

私がしたことは、「while True」を使用してループを作成し、画像が既に表示されているかどうかを確認することでした。
この場合、画像を処理して while ループを中断します。

コード例:
(Sikuli with 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 に答える