WinBatch Tech Support Home

Database Search

If you can't find the information using the categories below, post a question over in our WinBatch Tech Support Forum.

TechHome

OLE with MSIE
plus

Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.

Reading Text in Multiple MSIE Frames


Question:

I need help with capturing a text in a website that contains multiple frames. I intend to capture the day (April 01, 2001) from the upper frame but I don't know how.

Here are some sample HTML files with frames.


FRAMES.HTML
-------------
<HTML>
<HEAD>
<TITLE>OMS Temp</TITLE>
</HEAD>
<FRAMESET ROWS="0,*,*" BORDER=1 FRAMESPACING=2 BORDERCOLOR="#000064">
<FRAME NAME="checkFrame" SRC="" FRAMEBORDER=0>
<FRAMESET COLS="130,*" BORDER=1 FRAMESPACING=0 BORDERCOLOR="#808080">
<FRAME NAME="shortcutBar" SRC="" SCROLLING="AUTO" FRAMEBORDER=0>
<FRAME NAME="mainTopView" SRC="topframe.html" SCROLLING="AUTO" FRAMEBORDER=1>
</FRAMESET>
<FRAME NAME="detailFrame" SRC="" SCROLLING="AUTO" FRAMEBORDER=1>
</FRAMESET>
<NOFRAMES>
<BODY>
<P>Sorry your browser does not support frames. Please upgrade.
</BODY>
</NOFRAMES>
</HTML>


TOPFRAME.HTML --------------- <HTML> <HEAD> <TD VALIGN=MIDDLE NOWRAP CLASS="header"> <P>April 01, 2004 </TD> </BODY> </HTML>


I tried the following approach from what I know about html:

  • If I know the document id, I would have access to anything within the document. The document id for this site is hidden plus, I don't know how to retrieve a hidden document id using winbatch.

  • The other is, if I could define the number of frames using codes like:
browserDoc = Browser.Document
frames = browserDoc.frames
message ("# of frames", frames.length)
maybe I would have a chance but when I try that, I get "0" frames. I can you a better ideas. I tried. Please help.

Answer:

Works fine for me. I get 4 frames.
#definesubroutine startMSIE(url)
	Browser = objectopen("InternetExplorer.Application")
	Browser.addressbar = @false
	Browser.statusbar = @false
	Browser.menubar = @false
	Browser.toolbar = @false
	browser.visible = @true
	browser.navigate(url)
	; wait until page loads...
   WaitForPageLoad()
	; setup the document object...
	browserDoc = Browser.Document
	all = browserdoc.all
	return(browser)
#endsubroutine

#DefineSubroutine WaitForPageLoad()  ; assume Browser
   While browser.busy || browser.readystate == 1
      TimeDelay(0.5)
   EndWhile
   While browser.Document.ReadyState != "complete"
      TimeDelay(0.5)
   EndWhile
   return
#EndSubroutine



url = "C:\Jay\z\Cfg\temp.html"

br = startMSIE(url)

frames = browserDoc.frames
message ("# of frames", frames.length)
This shows it better...

#definesubroutine startMSIE(url)
	Browser = objectopen("InternetExplorer.Application")
	Browser.addressbar = @false
	Browser.statusbar = @false
	Browser.menubar = @false
	Browser.toolbar = @false
	browser.visible = @true
	browser.navigate(url)
	; wait until page loads...
   WaitForPageLoad()
	; setup the document object...
	browserDoc = Browser.Document
	all = browserdoc.all
	return(browser)
#endsubroutine

#DefineSubroutine WaitForPageLoad()  ; assume Browser
   While browser.busy || browser.readystate == 1
      TimeDelay(0.5)
   EndWhile
   While browser.Document.ReadyState != "complete"
      TimeDelay(0.5)
   EndWhile
   return
#EndSubroutine


url = "C:\temp\temp.html"

br = startMSIE(url)

frames = browserDoc.frames
display (2, "# of frames", frames.length)

bgcolorlist = "honeydew|powderblue|red|green|gold|purple"  ; make each frame a different color...

for x = 0 to frames.length-1
	thisframe = frames.item(x)
	thisdoc   = thisframe.document
	thisbody  = thisdoc.body
	thisbody.bgcolor = itemextract(x+1, bgcolorlist, "|")   ; set the bgcolor for the frame...
	gosub getDocumentText											 ; check for text inside the frame...
	objectclose(thisbody)
	objectclose(thisdoc)
	objectclose(thisframe)
next

objectclose(frames)

exit

:getDocumentText
HColl = thisdoc.GetElementsByTagName("HTML")
html  = HColl.item(0)
if html.innerText <> "" then message("Frame #%x%", html.innerText)
objectclose(html)
objectclose(HColl)
return

Article ID:   W16639
File Created: 2005:02:18:12:21:42
Last Updated: 2005:02:18:12:21:42