2017-08-29 17 views
0

私のプロジェクトは、いくつかのタスクを自動化することを中心にしています。私はアプリケーション、新しい3Dファイルを開いてから、アクセスベースからいくつかの操作を行います。私はpywinautoとグラフィックのやりとりを選んだので、オペレータはソフトウェアに介入する必要があります。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: Could not find 'win' in 'dict_keys

私はwindow(handle)に接続しようとしている、それが動作するかどうかのポストを更新します。任意のヒントやポインターを高く評価します。

+0

正確なエラーメッセージ –

+0

こんにちは貼り付けてください別のコメント – Axel35136

答えて

0

正規表現を使用して、ウィンドウタイトルの一部と一致させることができます。

app.window()を呼び出すときにtitle_re属性を確認してください。

ドキュメント:Window specification

この例では、 "SMLAutoFab" で始まるタイトルを持つすべてのウィンドウに一致します。

w = app.window(title_re='SMLAutoFab.*') 
w.Edit.SetEditText('S:\\32 - Articles\\'+ str(gamme) +'\\' + str(cas) +'\\' + str(produit) +'_sup.stl') 
+0

にエラーメッセージを挿入こんにちはneuhaus、私の個人的なスキルのためだけに動作しません、なぜあなたはこの指示を使用した、私はメモ帳のようなアプリケーション内のテキストを書くためだと思っていた。私はsuccedなしでbest_matchも試してください – Axel35136

0

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']

@Jensエラーがあります
+0

これを編集して質問に移してください。または、それは答えではないとフラグされます。 –

0

ええ、私はそれを見つける。それはばかげて、インスピレーションはneuhausから来ました。

Iちょうど置くが、正確な名前で、私はスペースを忘れてしまった...:

win = app.window(title=name_sup) 
 
win.Part.Click()

関連する問題