I am trying to compare two different files from separate folders with different extensions and then trying to open one file with pywinauto. The application opens however the files with the extension that i am mentioning does not open.
I tried to iterate over multiple files it did not work i gave a specific file name. Just the application opens.
Below is the code that i have tried.
from pywinauto.application import Application
import os
app = Application(backend="uia").start('C:\Program Files (x86)\Datawatch Monarch 14\DWMonarch.exe')
#app.Dialog.print_control_identifiers()
path = (r'C:\Check\Monarch\ICRDIS.dprj')
path2 = (r'C:\DOLV\ICRDIS.txt')
name1 = path.rsplit('.', 1)[0]
name2 = path2.rsplit('.', 1)[0]
#for name1 in path:
# for name2 in path2:
if name1 == name2:
try:
print(name1)
app.Dialog.child_window(title="Open", auto_id="Open", control_type="SplitButton")
app.Dialog.child_window(title="File", auto_id="PART_ApplicationButton", control_type="Button")
app.Dialog.Menu.Open(path.dprj)
#app.Dialog.Open('name1.dprj')
except:
print("No File Name Matches")
This is the control identifiers for Monarch with the Open Option:
Menu - 'Ribbon' (L-4, T30, R1924, B171)
| ['RibbonMenu', 'Ribbon', 'Menu']
| child_window(title="Ribbon", auto_id="MainRibbon", control_type="MenuBar")
| |
| | Separator - '' (L26, T1, R29, B21)
| | ['17', 'Separator3']
| | child_window(auto_id="beforeSeparator", control_type="Separator")
| |
| | SplitButton - 'Open' (L31, T-3, R72, B25)
| | ['OpenSplitButton', 'Open', 'SplitButton', 'SplitButton0', 'SplitButton1']
| | child_window(title="Open", auto_id="Open", control_type="SplitButton")
Couple of questions how do i open the specific application using the mentioned controls and iterate over multiple files.
What am i doing incorrect for this not to work? Please suggest.
Regards, Ren.
Thanks Vasily for the suggestions. Below is my entire code that works.
import os
import shutil
from pywinauto.application import Application
from pywinauto import Desktop
import pandas as pd
from datetime import date
from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta
from os import walk
from os.path import splitext
import subprocess
import time
from time import sleep
monarch_files = r'C:\Health Check\Support Monarch Project'
monarchPath = 'C:\Program Files (x86)\Datawatch Monarch 14\DWMonarch.exe'
fileformat ='xprj'
fileformat2='dprj'
rundate = date.today()
job_name = pd.read_excel(r'C:\Check\Job Name.xlsx',
sheet_name = 'JobName',
header = 0
)
for index , row in job_name.iterrows():
jobname = row['JobName']
filename=row['ReportName']
for file_name in dolv_files:
fname=file_name.rsplit('.', 1)[0]
if fname==filename:
print(jobname)
file_open = os.path.join(monarch_files,jobname + "." + fileformat)
file_open1 = os.path.join(monarch_files,jobname + "." + fileformat2)
if os.path.exists(file_open):
subprocess.Popen([monarchPath,file_open])
sleep(10)
dlg=Desktop(backend='uia').window(title_re='Datawatch Monarch *')
sleep(5)
try:
dlg.Resolve_Missing_Model_Files.OK.invoke()
dlg=Desktop(backend='uia').window(title_re='Datawatch Monarch *')
dlg.Export.invoke()
dlg.Select_All_Exports.invoke()
dlg.Run_Exports.invoke()
sleep(5)
dlg.close()
try:
dlg.No.invoke()
except:
print('e')
except:
dlg.Export.invoke()
dlg.Select_All_Exports.invoke()
dlg.Run_Exports.invoke()
sleep(5)
dlg.close()
try:
dlg.No.invoke()
except:
print('e')
elif os.path.exists(file_open1):
subprocess.Popen([monarchPath,file_open1])
dlg=Desktop(backend='uia').window(title_re='Datawatch Monarch *')
sleep(5)
try:
dlg.Resolve_Missing_Model_Files.OK.invoke()
dlg=Desktop(backend='uia').window(title_re='Datawatch Monarch *')
dlg.Export.invoke()
dlg.Select_All_Exports.invoke()
dlg.Run_Exports.invoke()
sleep(5)
dlg.close()
try:
dlg.No.invoke()
except:
print('e')
except:
dlg.Export.invoke()
dlg.Select_All_Exports.invoke()
dlg.Run_Exports.invoke()
sleep(5)
dlg.close()
try:
dlg.No.invoke()
except:
print('e')
else:
print("File Not Found")
Regards, Ren.