2010-03-09 2 views
5

Я использую сикули некоторое время, однако у меня проблема с ним ... Это недостаточно чувствительно. Я пытаюсь сопоставить что-то на экране, которое есть -EXACT-, и на экране есть несколько других элементов, которые выглядят настолько же, что сикули принимают их за то, что я действительно ищу, поэтому мне нужно сделать это Ищите ТОЛЬКО этот элемент без каких-либо различий.Изменить чувствительность Sikuli?

Как я могу это сделать?

О, и для того, чтобы объяснить мою проблему немного дальше, я пишу цикл для игры, как только индикатор выполнения достиг 100% - ему нужно разрешить цикл завершить (и начать сначала), однако прогресс bar - это просто обычный бар - поэтому, когда сикули ищет его на экране, он находит частично полный бар (поскольку, по-видимому, он соответствует разным длинам/ширинам/размерам изображения, которое он ищет) и триггерами.

ответ

6

Вы можете сделать следующее в Sikuli IDE:

  • Нажмите на изображение
  • В настройках Pattern> Matching Preview, перетащите ползунок схожести до 1,0 (весь путь направо)
  • Нажмите OK
3

Если вы используете Sikuli IDE, щелкните изображение миниатюры, для которого вы хотите изменить чувствительность. Вам будет представлен скриншот вашего рабочего стола с вложением шаблона (ваше изображение). Ниже есть слайдер, который изменяет чувствительность. При его изменении вы заметите, что выделенные вхождения шаблона увеличиваются или уменьшаются соответственно.
Этот метод предполагает, что у вас есть игра на экране (так что оконный режим, а не полноэкранный режим), но даже если вы этого не сделаете, вы все равно можете настроить чувствительность, просто вы не увидите «живых» результатов поиска.

Если вы звоните sikuli из Java кода, вы должны использовать Pattern(image.png).similar(y.xx)
где аргумент simmilar что-то между 0.00 и 1.00.
Я не использовал второй метод, поэтому вам может понадобиться поэкспериментировать с ним.

0

Будет ли следующая работа?
Вы ищете прогресс, чтобы достичь 100%, а затем снова петлю?

f = open("C:\\test.htm",'W') 
    f.write('<font color="#347C2C">lOOPtEST</font><br />') 
    f.write('loop iteration' + (str (count)) + '<br />') 
    count = count + 1 
    f.close() 
COUNT =10 
POPUP("LOOPTEST") 

//image compare from progress bar 

import sikuli.Sikuli * 

WebPath =('Z:\\ZZZautomation\\Web\\') 

BuildPath = ("Z:\BUILDS\Daily_BUILDS\QA_MainBranch_Install\*.install") 
BuildNumber = glob.glob("Z:\BUILDS\Daily_BUILDS\QA_MainBranch_Install\*.install") 
for filename in BuildNumber: 
    SmokeTestInfo = "SmokeTest_Build " + filename[45:50] + " Iteration 44"+".htm" 
global Number 
Number = filename[45:50] 

global SmokeTest 
SmokeTest = SmokeTestInfo 

global count 
count = 0 

defMidProgress(): 
    while not exists ("//path to image of progress bar @ 50%//",FOREVER) 
    //or 
    wait("//path to image of progress bar @ 50%//", FOREVER) 
    //using forevEr means sikuli will checK FOR 50% PROGRESS FOREVER 
    //the bottom execures once the condition above is met 
    open(WebPath + SmokeTest,'w') 
    f.write('<font color="#0000FF">Progress is at 50%</font><br />') 
    f.close() 
    // writes entry to html log fie 

defFinalProgress(): 

    while not exists ("//path to image of progress bar @ 100%//",FOREVER) 
    //or 
    wait("//path to image of progress bar @ 100%//", FOREVER) 
    //using forever means sikuli will check FOR 100% PROGRESS FOREVER 
    //the bottom execures once the condition above is met 
    open(WebPath + SmokeTest,'a') 
    f.write('<font color="#0000FF">Progress is at 100%</font><br />') 
    f.close() 
    // writes entry to html log fie 


def Loop 
count =0 
def midProgress(): 

def FinalProgress(): 
0

Чтобы соответствовать точный образ я использую:

image1 = ("image1.png") 
while not exists (Pattern(image1).exact()): 
     # Wait until that exact image appears. 
     wait(1)