rainmanwy / robotframework-SikuliLibrary

Sikuli Robot Framework Library provide keywords for Robot Framework to test UI through Sikuli.
Apache License 2.0
144 stars 61 forks source link

Cannot pass Argument to `Get Match Score` #145

Closed dschiller closed 3 years ago

dschiller commented 3 years ago

Doesn't work:

  ${image]  Set Variable  App/UI
  ${imageScore}  Get Match Score  ${image}  # <-- Doesn't work; Returns 0.0

Works:

  ${imageScore}  Get Match Score  App/UI  # <-- Works; Returns 0.9x
dschiller commented 3 years ago

Workaround:

  ${image]  Set Variable  App/UI
  ${imageScore}  Get Match Score  ${image}  # <-- Doesn't work; Returns 0.0
  ${imageScore}  Get Match Score  ${image}  # <-- Works; Returns 0.9x
dschiller commented 3 years ago

Was a Timing Issue.

First I was using:

  Wait for Image  App/UI  \  5  # Tries 5 Seconds to find the Image

But my Refactoring to use Get Match Score doesn't include a Timeout:

  ${image]  Set Variable  App/UI
  ${imageScore}  Get Match Score  ${image}  # <-- Doesn't work; Returns 0.0 | Image not visible yet
  ${imageScore}  Get Match Score  ${image}  # <-- Works; Returns 0.9x | Now the Image is visible
dschiller commented 3 years ago

The finished Keywords:

Verify Image
  [Arguments]  ${image}  ${message}  ${keyword}  ${timeout}=10  ${score}=.88
  FOR  ${steps}  IN RANGE  999
    ${sleep}  Set Variable  .5
    ${matchScoreTime}  Set Variable  .5
    ${imageScore}  Get Match Score  ${image}
    ${sleepSteps}  Evaluate  ${steps} * (${sleep} + ${matchScoreTime})
    # Log to Console  ${imageScore} >= ${score} or ${sleepSteps} >= ${timeout}
    Exit For Loop If  ${imageScore} >= ${score} or ${sleepSteps} >= ${timeout}
    Sleep  ${sleep}
  END
  ${imageScore}  Get Match Score  ${image}
  # Log to Console  ${imageScore} < ${score} @ ${image}
  Run Keyword If  ${imageScore} < ${score}
  ...  Fail and Clean  ${message}  ${keyword}
Fail and Clean
  [Arguments]  ${message}  ${keyword}
  Run Keyword  ${keyword}
  Fail  ${message}

Examples:

  Verify Image  App/UI  UI is not correct  Quit Application
  Verify Image  App/Peak  Peak is not correct  Quit Application  5