DennisFV 0 Posted October 4, 2010 Hi All, I have a a number of scripts interacting with IE to automate some stuff at work. Most of the scripts involve going over links in an Excel file or clicking on links on a website. It usually works fine until it navigates to a page that is a PDF. From what I've seen on the forums and what I've put together myself, when the script opens a PDF it is no longer part of IE. After a PDF is opened _IENavigate no longer works. Is there anything I can do to navigate to a different page after going to a PDF? I can't ignore PDF links as they are important to work. _IEQuit doesn't work after a PDF the PDF is opened. IENavigate also doesn't work after a PDF has been opened. Share this post Link to post Share on other sites
DennisFV 0 Posted October 5, 2010 So far the only possible solution I've come up with is to kill the IE process after a PDF has been opened and start a new copy of IE. I'd really like to avoid this if at all possible. Share this post Link to post Share on other sites
wakillon 403 Posted October 5, 2010 Have you Try this ? _IEAction ( $oIE, "back" ) AutoIt 3.3.14.2 X86 - SciTE 3.6.0 - WIN 8.1 X64 - Other Example Scripts Share this post Link to post Share on other sites
DennisFV 0 Posted October 5, 2010 Have you Try this ? _IEAction ( $oIE, "back" ) Yeah, that also doesn't work. I'm pretty sure what happens is that opening a PDF is causing adobe to override IE (I think I saw something similar mentioned in a different post from a year or two ago). So it seems like anything related to IE just doesn't work. Since I have $oIE = _IECreate() Is there any way I can use $oIE to get control of IE again? Share this post Link to post Share on other sites
wakillon 403 Posted October 5, 2010 Yeah, that also doesn't work. I'm pretty sure what happens is that opening a PDF is causing adobe to override IE (I think I saw something similar mentioned in a different post from a year or two ago). So it seems like anything related to IE just doesn't work. Since I have $oIE = _IECreate()Is there any way I can use $oIE to get control of IE again?Give me your pdf url for try ! AutoIt 3.3.14.2 X86 - SciTE 3.6.0 - WIN 8.1 X64 - Other Example Scripts Share this post Link to post Share on other sites
DennisFV 0 Posted October 5, 2010 Give me your pdf url for try !I can't give you the URL I'm using but any PDF will work. You can use this one http://www.mass.gov/Eeohhs2/docs/dph/cdc/factsheets/hga_hge.pdf Share this post Link to post Share on other sites
wakillon 403 Posted October 5, 2010 Try Like This :#include <IE.au3> $_PdfUrl = 'http://www.mass.gov/Eeohhs2/docs/dph/cdc/factsheets/hga_hge.pdf' $oIE= _IECreate ( $_PdfUrl, 0 , 1, 0 ) ConsoleWrite ( "-->- 1 : _IECreate" & @Crlf ) Sleep ( 1000 ) ConsoleWrite ( "-->- 2 : Sleep" & @Crlf ) _IEAction ( $oIE, "home" ) ConsoleWrite ( "-->- 3 : _IEAction" & @Crlf )And I think _IEAction ( $oIE, "back" ) would work too, if a page was open before... AutoIt 3.3.14.2 X86 - SciTE 3.6.0 - WIN 8.1 X64 - Other Example Scripts Share this post Link to post Share on other sites
DennisFV 0 Posted October 5, 2010 Try Like This : #include <IE.au3> $_PdfUrl = 'http://www.mass.gov/Eeohhs2/docs/dph/cdc/factsheets/hga_hge.pdf' $oIE= _IECreate ( $_PdfUrl, 0 , 1, 0 ) ConsoleWrite ( "-->- 1 : _IECreate" & @Crlf ) Sleep ( 1000 ) ConsoleWrite ( "-->- 2 : Sleep" & @Crlf ) _IEAction ( $oIE, "home" ) ConsoleWrite ( "-->- 3 : _IEAction" & @Crlf ) And I think _IEAction ( $oIE, "back" ) would work too, if a page was open before... What you did works if the PDF is the first link you go to, however this doesn't work and is more like what my script will be doing #include <IE.au3> $_PdfUrl = 'http://www.mass.gov/Eeohhs2/docs/dph/cdc/factsheets/hga_hge.pdf' $oIE= _IECreate ( "http://www.google.com", 0 , 1, 0 ) ConsoleWrite ( "-->- 1 : _IECreate" & @Crlf ) Sleep ( 1000 ) ConsoleWrite ( "-->- 2 : Sleep" & @Crlf ) _IENavigate($oIE, $_PdfUrl) Sleep ( 1000 ) ConsoleWrite ( "-->- 3 : Sleep" & @Crlf ) _IEAction ( $oIE, "home" ) ConsoleWrite ( "-->- 4 : _IEAction" & @Crlf ) The script will be pulling links from excel and going to each link, waiting for X number of seconds, then going to the next link. In my script, and the example above once it gets to the PDF it isn't able to continue. Share this post Link to post Share on other sites
DaleHohm 65 Posted October 5, 2010 Your script is hanging in _IELoadWait waiting for a complete state from the document that never arrives. It will timeout by default after 5 minutes. You can explicitly set the LoadWait Timeout with _IELoadWaitTimeout and you will get a return value from _IECreate or _IENavigate that you can trap and act upon (note that _IECreate and _IENavigate both call _IELoadWait for you by default). Dale Free Internet Tools: DebugBar, AutoIt IE Builder, HTTP UDF, MODIV2, IE Developer Toolbar, IEDocMon, Fiddler, HTML Validator, WGet, curlMSDN docs: InternetExplorer Object, Document Object, Overviews and Tutorials, DHTML Objects, DHTML Events, WinHttpRequest, XmlHttpRequest, Cross-Frame Scripting, Office object modelAutomate input type=file (Related)Alternative to _IECreateEmbedded? better: _IECreatePseudoEmbedded Better Better?IE.au3 issues with Vista - WorkaroundsSciTe Debug mode - it's magic: #AutoIt3Wrapper_run_debug_mode=Y Doesn't work needs to be ripped out of the troubleshooting lexicon. It means that what you tried did not produce the results you expected. It begs the questions 1) what did you try?, 2) what did you expect? and 3) what happened instead?Reproducer: a small (the smallest?) piece of stand-alone code that demonstrates your trouble Share this post Link to post Share on other sites
DennisFV 0 Posted October 5, 2010 Your script is hanging in _IELoadWait waiting for a complete state from the document that never arrives. It will timeout by default after 5 minutes. You can explicitly set the LoadWait Timeout with _IELoadWaitTimeout and you will get a return value from _IECreate or _IENavigate that you can trap and act upon (note that _IECreate and _IENavigate both call _IELoadWait for you by default).DaleAhh, ok I see what you're saying. Doing a test where I lowered the LoadWait Timeout got the script to continue. Thanks! Share this post Link to post Share on other sites
wakillon 403 Posted October 5, 2010 (edited) Like this #include <IE.au3> $_PdfUrl = 'http://www.mass.gov/Eeohhs2/docs/dph/cdc/factsheets/hga_hge.pdf' $oIE = _IECreate ("www.autoitscript.com" ) _IELoadWait ( $oIE ) ConsoleWrite ( "-->- 1 : _IECreate" & @Crlf ) _IENavigate ( $oIE, $_PdfUrl, 0 ) _IELoadWait ( $oIE, '', 5000 ) ConsoleWrite ( "-->- 2 : _IENavigate" & @Crlf ) Sleep ( 1000 ) ConsoleWrite ( "-->- 3 : Sleep" & @Crlf ) _IEAction ( $oIE, "back" ) ConsoleWrite ( "-->- 4 : _IEAction" & @Crlf ) Otherwise you can detect the pdf by the end of the url ! If StringRight ( $_Url, 4 ) <> '.pdf' Then _IENavigate (... Edited October 5, 2010 by wakillon AutoIt 3.3.14.2 X86 - SciTE 3.6.0 - WIN 8.1 X64 - Other Example Scripts Share this post Link to post Share on other sites