Jump to content

_IENavigate()


Bam
 Share

Recommended Posts

Well what im trying to do is load acouple webpages with _IEnavigate(), it works but my problem is that some webpages like hang (or w/e the term is) resulting in _IEnavigate() with Wait = 1 can take along time for that page to load. So what I have done is made another script to read the status bar looking for the same text then refreshing the page.

Opt("WinTitleMatchMode", 2)

Local $LastStatusText, $Timeout = 0

While 1
    If $LastStatusText == ControlGetText ("Windows Internet Explorer", "", "[CLASS:msctls_statusbar32; INSTANCE:1]") Then
        If $LastStatusText <> "Done" Then
            If $LastStatusText <> "" Then
                $Timeout += 1
            EndIf
        EndIf
    Else
        $LastStatusText = ControlGetText ("Windows Internet Explorer", "", "[CLASS:msctls_statusbar32; INSTANCE:1]")
        $Timeout = 0
    EndIf
    If $Timeout > 50 Then
        Send("{f5}")
        $Timeout = 0
    EndIf
    Sleep(100)
WEnd

Problem is this isnt as reliable as I need it to be cause I ran into a webpage that gets stuck a loading 1 last thing that never finishes and it constanly refreshes the page. This isnt the first thing that I have tried but its been the most reliable so far.

I was wounder if any one had any suggestions / ideas.

Link to comment
Share on other sites

First of all, stop using $f_wait = 1, so you don't have to go to a separate script to monitor progress.

Once you do _IENavigate(), with $f_wait = 0, then go into a loop where you wait for a particular page element to load:

#include <IE.au3>

Global $sURL = "http://www.google.com/#hl=en&source=hp&q=AutoIt"
Global $oIE, $oStats

$oIE = _IECreate()
_IENavigate($oIE, $sURL, 0)
While 1
    If _IELoadWait($oIE, 10, 10) Then ExitLoop
    $oStats = _IEFormElementGetObjByName($oIE, "resultStats")
    If @error = 0 And IsObj($oStats) Then ExitLoop
WEnd
MsgBox(64, "Test", "Page is done.", 3)

:)

Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Link to comment
Share on other sites

Thx Psalty ;)

I cant beleive I didnt think of that :)

Nice google link to btw.

Edit:

uhh im not realy sure what this dose.

$oStats = _IEFormElementGetObjByName($oIE, "resultStats")

Edited by Bam
Link to comment
Share on other sites

Thx Psalty ;)

I cant beleive I didnt think of that :)

Nice google link to btw.

Edit:

uhh im not realy sure what this dose.

$oStats = _IEFormElementGetObjByName($oIE, "resultStats")

just use IEloadwait with the timout option

http://www.autoitscript.com/autoit3/docs/libfunctions/_IELoadWait.htm

Link to comment
Share on other sites

uhh im not realy sure what this dose.

$oStats = _IEFormElementGetObjByName($oIE, "resultStats")

It gets the object reference to an element with a name (ID, actually) of "resultStats". While the page is not loaded yet, that function fails because that element doesn't exist yet. Once the page loads, that element exists and it retrieves a valid object reference. So this is how I am testing when the page is loaded. You would have to substitute a different element that applied to your target page.

:)

Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...