← Back to team overview

sikuli-driver team mailing list archive

[Bug 1811361] Re: [1.1.4] Windows: app focus and close should work for more than one instance running of same some-name.exe

 

** Description changed:

- -------------- problem
- currently SikuliX only finds first in the row (based on tasklist)
- fix will only be available towards end of February '19
- 
- --------------------------------------------------------------------
- 
  1.1.4-SNAPSHOT-2019-01-10_09:21/Windows10.0/Java8(64)1.8.0_191-b12
  
  Windows 10 64bit
  
  I used this script to open two portable chrome instances and then tried
  to change the focus to them or close them with .focus() and .close()
  method but nothing happens:
  
  open_instances = {} # a dictionary to keep record of opened browsers
  {name:app}
  
  def browser(target, action = True ):
      temp = r"C:\Users\Test\Desktop\Chromes\f" + str(target) + r"\f" + str(target) + r".exe"
      if action: #for opening
          open_instances["f"+str(target)] = App(temp)
          open_instances["f"+str(target)].open(10)
      else: # for closing
          open_instances["f"+str(target)].close()
          del open_instances["f"+str(target)]
          wait(1)
  
  def main():
      for i in range(1,3): # trying to open the instances which works fine
          browser(i)
          wait(2)
      for i in range(1,3): # trying to close same instances but it does not work. I even tried the .focus() but no success either
          browser(i, False)
  
  main()

** Changed in: sikuli
       Status: In Progress => Confirmed

** Changed in: sikuli
   Importance: Medium => Undecided

** Description changed:

+ ---------------------- problem and workaround
+ someApp.focus() and someApp.close() will only work, if the app object created with App("some.exe").open() will have a window associated after startup.
+ 
+ -------------------- workaround
+ In complex cases like portable Chrome, there is no associated window with the main process and hence it is only possible to focus the app with a part of the window title, which in turn allows to get the app object with the window-owning process, that in turn is focusable and closeable.
+ 
+ ------------------------------------------------------------
+ 
  1.1.4-SNAPSHOT-2019-01-10_09:21/Windows10.0/Java8(64)1.8.0_191-b12
  
  Windows 10 64bit
  
  I used this script to open two portable chrome instances and then tried
  to change the focus to them or close them with .focus() and .close()
  method but nothing happens:
  
  open_instances = {} # a dictionary to keep record of opened browsers
  {name:app}
  
  def browser(target, action = True ):
      temp = r"C:\Users\Test\Desktop\Chromes\f" + str(target) + r"\f" + str(target) + r".exe"
      if action: #for opening
          open_instances["f"+str(target)] = App(temp)
          open_instances["f"+str(target)].open(10)
      else: # for closing
          open_instances["f"+str(target)].close()
          del open_instances["f"+str(target)]
          wait(1)
  
  def main():
      for i in range(1,3): # trying to open the instances which works fine
          browser(i)
          wait(2)
      for i in range(1,3): # trying to close same instances but it does not work. I even tried the .focus() but no success either
          browser(i, False)
  
  main()

** Summary changed:

- [1.1.4] Windows: app focus and close should work for more than one instance running of same some-name.exe
+ [1.1.4] Windows: app focus and close only work if app instance has an associated window

-- 
You received this bug notification because you are a member of Sikuli
Drivers, which is subscribed to Sikuli.
https://bugs.launchpad.net/bugs/1811361

Title:
  [1.1.4] Windows: app focus and close only work if app instance has an
  associated window

Status in Sikuli:
  Confirmed

Bug description:
  ---------------------- problem and workaround
  someApp.focus() and someApp.close() will only work, if the app object created with App("some.exe").open() will have a window associated after startup.

  -------------------- workaround
  In complex cases like portable Chrome, there is no associated window with the main process and hence it is only possible to focus the app with a part of the window title, which in turn allows to get the app object with the window-owning process, that in turn is focusable and closeable.

  ------------------------------------------------------------

  1.1.4-SNAPSHOT-2019-01-10_09:21/Windows10.0/Java8(64)1.8.0_191-b12

  Windows 10 64bit

  I used this script to open two portable chrome instances and then
  tried to change the focus to them or close them with .focus() and
  .close() method but nothing happens:

  open_instances = {} # a dictionary to keep record of opened browsers
  {name:app}

  def browser(target, action = True ):
      temp = r"C:\Users\Test\Desktop\Chromes\f" + str(target) + r"\f" + str(target) + r".exe"
      if action: #for opening
          open_instances["f"+str(target)] = App(temp)
          open_instances["f"+str(target)].open(10)
      else: # for closing
          open_instances["f"+str(target)].close()
          del open_instances["f"+str(target)]
          wait(1)

  def main():
      for i in range(1,3): # trying to open the instances which works fine
          browser(i)
          wait(2)
      for i in range(1,3): # trying to close same instances but it does not work. I even tried the .focus() but no success either
          browser(i, False)

  main()

To manage notifications about this bug go to:
https://bugs.launchpad.net/sikuli/+bug/1811361/+subscriptions


References