sikuli-driver team mailing list archive
-
sikuli-driver team
-
Mailing list archive
-
Message #28791
[Bug 1381945] Re: The With keyword is not reliable
confirmed: bug in 1.0.1
fixed in 1.1.0:
--- testscript:
reg = Region(0,0,100,100)
reg.setAutoWaitTimeout(1)
print "reg.TO:", reg.getAutoWaitTimeout()
with reg:
print "TO:", getAutoWaitTimeout()
start = time.time()
i = 0
while not exists(Pattern("some_not_visible.png").exact()):
print time.time() - start
start = time.time()
i += 1
if i > 1: break
--- prints
reg.TO: 0.5
TO: 0.5
0.667000055313
0.669000148773
--- BTW:
I do not really see an advantage using "with" for just saving some repeated usage of some_region. and having an additional indent level.
In my opinion the explicit usage of the dotted version with the prefixed
region makes things much clearer and you then know throughout the
script, that an undotted usage like click() addresses the screen.
--- One more thing:
In 1.1.0 there is an alternative for with:
use(some_region)
click() # is processed against some_region
…
use()
click() # now again uses SCREEN
I added this to support switching between screens in a multi monitor environment including remote screens.
But it can as well be used with a region and saves the additional indent.
** Changed in: sikuli
Status: New => In Progress
** Changed in: sikuli
Importance: Undecided => Medium
** Changed in: sikuli
Assignee: (unassigned) => RaiMan (raimund-hocke)
** Changed in: sikuli
Milestone: None => 1.2.0
** Summary changed:
- The With keyword is not reliable
+ [1.0.1] Jython With: setAutoWaitTimeout ignored - fixed in 1.1.0
** Changed in: sikuli
Status: In Progress => Fix Committed
** Changed in: sikuli
Importance: Medium => Critical
** Changed in: sikuli
Milestone: 1.2.0 => 1.1.0
--
You received this bug notification because you are a member of Sikuli
Drivers, which is subscribed to Sikuli.
https://bugs.launchpad.net/bugs/1381945
Title:
[1.0.1] Jython With: setAutoWaitTimeout ignored - fixed in 1.1.0
Status in Sikuli:
Fix Committed
Bug description:
Version 1.0.1
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)
To manage notifications about this bug go to:
https://bugs.launchpad.net/sikuli/+bug/1381945/+subscriptions
References