| 
		
	
	
	
		
	Posts: 197Threads: 60
 Joined: Dec 2013
 
	
	
		I'm surprised by how long I've been trying to automate something so simple. I want to automate saving web pages. file > save as > enter name > save.
 I've been at this for over an hour now. Everything runs but firefox's ui is unreliable so the macro will break for no reason that I can see.
 
 Here are the problems:
 
 1. this save dialog SOMETIMES will save when I press enter, sometimes it will make the window inactive.
 
 2. I CAN'T grab activate this window after initializing it - EVEN when it's on top (active). so I can't use accessible objects. I've never had this happen before.
 
 3. I can't use a bunch of tabs to go to the save button..whether I use space bar to press save, or enter to save...it'll work a few times..but it's the same as problem 1...sometimes, for no reason, it won't reach the save button.
 
 I'm using "spe 300" so it should be slow enough.
 
 is there anything I can do to avoid dealing with firefox's unreliable save dialog box?
 
 Thanks
 
	
	
	
		
	Posts: 12,239Threads: 144
 Joined: Dec 2002
 
	
	
		In my Firefox it is standard "Save As" dialog. Objects work. Using Firefox 27 on Windows 7. Maybe some Firefox extension replaces the dialog?
	 
	
	
	
		
	Posts: 197Threads: 60
 Joined: Dec 2013
 
	
	
		I got acc object to work. I added more code and then it stopped working. I can't figure this out. Can you please look at this? 
Macro Macro2 spe 200
 int i
 int w=win("" "Mozilla*WindowClass" "" 0x4)
 act w
 
 
 'Af             ;; Alt+F
 '"a"            ;; "a"
 
 int w1=win("Save As" "#32770")
 act w1
 
 
 
 spe 300
 
 ;pick filename area
 Acc a.Find(w1 "TEXT" "File name:" "class=Edit[]state=0x100000 0x20000040" 0x1005 2)
 
 
 ;pick save button
 Acc a1.Find(w1 "PUSHBUTTON" "Save" "class=Button[]id=1" 0x1005 2)
 
 
 'Z              ;; Esc
 'Z              ;; Esc
 
 
 act w
 'Af             ;; Alt+F
 '"a"            ;; "a"
 
 
 1
 act w1
Keeps telling me on the last line "Error (RT) in Macro2:  window not found.    ? "
	 
	
	
	
		
	Posts: 12,239Threads: 144
 Joined: Dec 2002
 
	
	
		Esc probably closed the window and the handle w1 is invalid.
	 
	
	
	
		
	Posts: 197Threads: 60
 Joined: Dec 2013
 
	
	
		I tried replacing
 'z   with  clo. No difference.
 
 Why is w1 invalid?
 
 I used window/control actions to generate and test the code for w1.
 
 Even in my code, It works the first time I call w1, but not the second time it is called. I tested calling act w near the end and that works even when the save as dialog is active. But after calling act w, a call for w1 fails.
 
 I'm sorry, but I just can't understand what's wrong.
 
	
	
	
		
	Posts: 12,239Threads: 144
 Joined: Dec 2002
 
	
	
		w1 is invalid because the window is closed. For other window need to call win again.
 This macro is unreliable because does not wait for the save as window.
 
	
	
	
		
	Posts: 197Threads: 60
 Joined: Dec 2013
 
	
	
		I tried adding a delay to ensure the save as window has enough time to show up and it still gives the same error. 
Macro Macro2 spe 200
 int i
 int w=win("" "Mozilla*WindowClass" "" 0x4)
 act w
 
 
 'Af             ;; Alt+F
 'a              ;; "a"
 1
 
 int w1=win("Save As" "#32770")
 act w1
 
 spe 300
 
 ;pick filename area
 Acc a.Find(w1 "TEXT" "File name:" "class=Edit[]state=0x100000 0x20000040" 0x1005 2)
 
 
 ;pick save button
 Acc a1.Find(w1 "PUSHBUTTON" "Save" "class=Button[]id=1" 0x1005 2)
 
 
 clo                ;;tried using 'ZZ and I still get the same error, "window not found"
 
 act w
 'Af             ;; Alt+F
 'a              ;; "a"
 
 1
 act w1          ;;I can verify that the save as window does appear and act w1 still gives the "window not found" error
 
	
	
	
		
	Posts: 197Threads: 60
 Joined: Dec 2013
 
	
	
		Good news: I found a fix 
Bad news: I still don't understand why the fixes were needed. I commented the code in case this helps in the future.
 
Macro save pages at domain info - works - finally2 spe 200
 int i
 int w=win("" "Mozilla*WindowClass" "" 0x4)
 act w
 
 
 'Af             ;; Alt+F
 'a              ;; "a"
 1
 
 int w1=win("Save As" "#32770")
 act w1
 
 spe 300
 
 0.5
 ;pick filename area
 Acc a.Find(w1 "TEXT" "File name:" "class=Edit[]state=0x100000 0x20000040" 0x1005 2)
 
 0.5
 ;pick save button
 Acc a1.Find(w1 "PUSHBUTTON" "Save" "class=Button[]id=1" 0x1005 2)
 
 
 clo
 
 for i 2 70
 ,act w
 
 ,0.5
 ,
 ,'Cl ;;go to address bar
 ,spe
 ,'F"http://domain.info/page/{i}.aspx"
 ,'Y ;;enter
 ,
 ,7
 ,
 ,'Af             ;; Alt+F
 ,'a              ;; "a"
 ,1
 ,
 ,;I made this work by doing w1=win WITHOUT the int.
 ,w1=win("Save As" "#32770")
 ,act w1
 ,
 ,;click file name area
 ,a.DoDefaultAction
 
 ,
 ,;append page number
 ,spe
 ,'ELLLLV            ;; End Left Left Left Left Space
 ,'F"page {i}"
 ,'E
 ,0.5
 ,
 ,;I made this work by doing w1=win WITHOUT the int.
 ,w1=win("Save As" "#32770")
 ,act w1
 
 ,;Must find object again. Even odder, I didn't have to use this for the a.DoDefaultAction for clicking the filename area.
 ,a1.Find(w1 "PUSHBUTTON" "Save" "class=Button[]id=1" 0x1005 2)
 ,
 ,;click save
 ,a1.Mouse(1)
 |