我的项目围绕自动执行一些任务。我打开一个应用程序,一个新的3D文件然后我从一个访问基地做一些操作。我选择了pywinauto
和图形交互,因为操作员需要对软件进行干预。
我的问题是:当我打开一个新文件时,应用程序的名称会发生变化。有代码:
# Search data on the Access Base
cursor = conn.cursor()
cursor.execute("SELECT * FROM [SophieBot_produit] WHERE [SophieBot_produit].[ID PRODUCTION] =?",(prod))
produit_sql = cursor.fetchall()
production, statut, produit_value, nb_element, cas, gamme, sl_tps_open, sl_tps_gen, sl_tps_save = produit_sql[0]
produit = str(produit_value).zfill(8)
# Data work, check with print()
#Connecting to the software
app = application.Application()
app.Connect(path='C:\\myprogram')
# First step everything works
app.SLMAutoFab.menu_select("File -> Open")
app.window_(title_re="Open file.*").Edit.SetEditText('S:\\32 - Articles\\'+ str(gamme) +'\\' + str(cas) +'\\' + str(produit) +'_sup.stl')
app.window_(title_re="Open file.*").Ouvrir.Click()
# New step is to do operation on the software
现在我的软件应用程序名称正在更改Myprogram - 3DFile
当你写新名字时,一切都有效:
app.SLMAutoFab00057389_sup.Part.Click()
但是软件的名称发生了变化,所以我尝试了:
win = 'MyProgram' + str(produit)
app.win.Part.Click()
代码不起作用,错误信息为:
MatchError:在'dict_keys
中找不到'win'
我正在尝试与window(handle)
建立联系,如果有效,我会更新帖子。非常感谢任何提示或指示。
答案 0 :(得分:0)
您可以使用正则表达式来匹配部分窗口标题。
在致电title_re
时查看app.window()
属性。
此示例匹配标题以“SMLAutoFab”开头的所有窗口:
w = app.window(title_re='SMLAutoFab.*')
w.Edit.SetEditText('S:\\32 - Articles\\'+ str(gamme) +'\\' + str(cas) +'\\' + str(produit) +'_sup.stl')
答案 1 :(得分:0)
错误@Jens
File "link\Bot.py", line 99, in slicing
win.Part.Click()
File "C:\link\site-packages\pywinauto\application.py", line 351, in __getattribute__
ctrls = self.__resolve_control(self.criteria)
File "C:\link\site-packages\pywinauto\application.py", line 248, in __resolve_control
raise e.original_exception
File "C:\link\site-packages\pywinauto\timings.py", line 425, in wait_until_passes
func_val = func(*args)
File "C:\link\site-packages\pywinauto\application.py", line 190, in __get_ctrl
dialog = self.backend.generic_wrapper_class(findwindows.find_element(**criteria[0]))
File "C:\link\site-packages\pywinauto\findwindows.py", line 84, in find_element
elements = find_elements(**kwargs)
File "C:\link\site-packages\pywinauto\findwindows.py", line 300, in find_elements
elements = findbestmatch.find_best_control_matches(best_match, wrapped_elems)
File "C:\link\findbestmatch.py", line 533, in find_best_control_matches
raise MatchError(items = name_control_map.keys(), tofind = search_text)
MatchError: Could not find 'SLMAutoFab.*' in 'dict_keys(['Programblabla']

答案 2 :(得分:0)
好的,我找到了。这是愚蠢的,灵感来自于neuhaus。
我只是说,但确切的名字,我忘了一个空间...:
B