Posts: 197
Threads: 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,090
Threads: 142
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: 197
Threads: 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,090
Threads: 142
Joined: Dec 2002
Esc probably closed the window and the handle w1 is invalid.
Posts: 197
Threads: 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,090
Threads: 142
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: 197
Threads: 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: 197
Threads: 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)
|