如何使用 pywinauto 移动 firefox window
How to move a firefox window with pywinauto
这是我的代码:
评论的部分是我之前尝试过的,但是没有用。
try:
# app = Application(backend="uia").start("C:\Program Files\Mozilla Firefox\firefox.exe")
# time.sleep(5)
# mozilla = app.window_(title_re = ".*Mozilla Firefox")
# time.sleep(5)
# mozilla.move_window(200, 200, 200, 200, True)
app = Application().start("C:\Program Files\Mozilla Firefox\firefox.exe")
dlg_spec = app.window()
dlg_spec.move_window(x=None, y=None, width=200, height=100, repaint=True)
except AppStartError:
print("CANNOT START !!")
return False
except ElementNotFoundError :
print("COULD NOT FOUND THE WINDOW !!")
return False
except ElementAmbiguousError :
print("TOO MANY FIREFOX !!")
return False
我无法找到 WINDOW!!
在评论中我得到了这个错误:
mozilla.move_window(200, 200, 200, 200, True)
File "C:\Users\XX\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pywinauto\application.py", line 180, in __call__
raise AttributeError("Neither GUI element (wrapper) " \
AttributeError: Neither GUI element (wrapper) nor wrapper method 'move_window' were found (typo?)
如果有任何帮助,我将不胜感激。
您必须在 .window(...)
调用中使用正确的 title
或 best_match
值。这样 pywinauto 就知道要搜索哪个 window 了。例如,app.window(title_re=".*Firefox")
.
要列出所有标题,请使用此语句:
print([w.window_text() for w in app.windows()])
此外 .draw_outline()
是突出显示找到的元素的有用方法。
编辑:
如果 .windows()
returns 是一个空列表,除了 start
之外,您还必须 re-connect 使用方法 connect
而不是 / 按标题 re-connect。我们有一个检测派生进程的功能请求,但目前它的优先级较低。
编辑 2:
我的工作原理:
from pywinauto import Application
app = Application(backend="win32").start("C:\Program Files\Mozilla Firefox\firefox.exe")
app = Application(backend="win32").connect(title='Mozilla Firefox', found_index=0, timeout=5)
dlg_spec = app.window(title='Mozilla Firefox', found_index=0)
dlg_spec.move_window(x=None, y=None, width=200, height=100, repaint=True)
这是我的代码:
评论的部分是我之前尝试过的,但是没有用。
try:
# app = Application(backend="uia").start("C:\Program Files\Mozilla Firefox\firefox.exe")
# time.sleep(5)
# mozilla = app.window_(title_re = ".*Mozilla Firefox")
# time.sleep(5)
# mozilla.move_window(200, 200, 200, 200, True)
app = Application().start("C:\Program Files\Mozilla Firefox\firefox.exe")
dlg_spec = app.window()
dlg_spec.move_window(x=None, y=None, width=200, height=100, repaint=True)
except AppStartError:
print("CANNOT START !!")
return False
except ElementNotFoundError :
print("COULD NOT FOUND THE WINDOW !!")
return False
except ElementAmbiguousError :
print("TOO MANY FIREFOX !!")
return False
我无法找到 WINDOW!! 在评论中我得到了这个错误:
mozilla.move_window(200, 200, 200, 200, True)
File "C:\Users\XX\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pywinauto\application.py", line 180, in __call__
raise AttributeError("Neither GUI element (wrapper) " \
AttributeError: Neither GUI element (wrapper) nor wrapper method 'move_window' were found (typo?)
如果有任何帮助,我将不胜感激。
您必须在 .window(...)
调用中使用正确的 title
或 best_match
值。这样 pywinauto 就知道要搜索哪个 window 了。例如,app.window(title_re=".*Firefox")
.
要列出所有标题,请使用此语句:
print([w.window_text() for w in app.windows()])
此外 .draw_outline()
是突出显示找到的元素的有用方法。
编辑:
如果 .windows()
returns 是一个空列表,除了 start
之外,您还必须 re-connect 使用方法 connect
而不是 / 按标题 re-connect。我们有一个检测派生进程的功能请求,但目前它的优先级较低。
编辑 2:
我的工作原理:
from pywinauto import Application
app = Application(backend="win32").start("C:\Program Files\Mozilla Firefox\firefox.exe")
app = Application(backend="win32").connect(title='Mozilla Firefox', found_index=0, timeout=5)
dlg_spec = app.window(title='Mozilla Firefox', found_index=0)
dlg_spec.move_window(x=None, y=None, width=200, height=100, repaint=True)