Comment 0 for bug 1381945

Revision history for this message
Ned (nedleonard) wrote : The With keyword is not reliable

I have found that when using the with keyword with a region, it does not always apply to the statements beneath.

For example, in the following code

def dispSchemeListRegion(sTestId,iDelay):
    match = findLog(sTestId,pDispScreenTitleBar)

    if(match):
        x = match.getX()
        y = match.getY()
    else:
        exit(0)
    reg = Region(x,y,483,217)
    rDispSchemeList = Region(reg.offset(463,429))

    rDispSchemeList.setAutoWaitTimeout(iDelay)
    return rDispSchemeList

-----------------------------------------------------------------------------
rDispSchemeList = dispSchemeListRegion(sTestId,0.5)

#the wait delay of .5 seconds is not applied to the the while loop

with rDispSchemeList:
    while not exists(pDispSchemeScrollBarBottom):
         try:
             rDispSchemeList.click(pImage)
             type(Key.ENTER)
             break
         except FindFailed:
                type(Key.DOWN)

#however, in the following example, it is and the whole block runs much faster

while not rDispSchemeList.exists(pDispSchemeScrollBarBottom):
    try:
        rDispSchemeList.click(pImage)
        type(Key.ENTER)
        break
    except FindFailed:
        type(Key.DOWN)