Squish の eventHandler を使用したことがありません。これの代わりに (私の問題は、すべてのオブジェクトが動的であることです)、カスタムの待機関数を作成しました。フォーム/タイプに関係なく、すべてのオブジェクトに対して機能します。
この関数は、オブジェクトが true になるまで待機します。
def whileObjectFalse(objectID, log = True):
# functions enters in a while state, as long as expected object is FALSE, exiting when object is TRUE
# (default timeout of [20s])
start = time.time()# START timer
counter = 40
object_exists = object.exists(objectID)
while object_exists == False:
object_exists = object.exists(objectID)
snooze(0.5)
counter -= 1
if counter == 0:
test.fail(" >> ERR: in finding the object [%s]. Default timeout of [20s] reached!" % objectID)
return
if log == True:
elapsed = (time.time() - start)# STOP timer
test.log(" (whileObjectFalse(): waited [%s] after object [%s])" % (elapsed, objectID))
snooze(0.5)
基本的に、コードは次のようになります。
def whileObjectFalse(objectID, log = True):
start = time.time()# START timer
counter = 40
object_exists = object.exists(objectID)
while object_exists == False:
object_exists = object.exists(objectID)
snooze(0.5)
counter -= 1
if counter == 0:
test.fail(" >> ERR: in finding the object [%s]. Default timeout of [20s] reached!" % objectID)
return
if log == True:
elapsed = (time.time() - start)# STOP timer
test.log(" (whileObjectFalse(): waited [%s] after object [%s])" % (elapsed, objectID))
snooze(0.5)
def main():
startApplication("myapp")
whileObjectFalse("NewDialog")
mouseClick(waitForObject(":MyButtonOnNewDialog"), MouseButton.LeftButton)