interesting - I get an "unknown frame exception" instead of an "unknown object exception" using locate.

>> browser.frame("main").locate()
Watir::Exception::UnknownFrameException: Unable to locate a frame using name and main. 
from /Library/Ruby/Gems/1.8/gems/firewatir-1.6.5/lib/firewatir/elements/frame.rb:29:in `locate'
from (irb):66

>> browser.frame("main").locate_frame(:name, 'main')
Watir::Exception::UnknownObjectException: Unable to locate element, using :name, "main"
from /Library/Ruby/Gems/1.8/gems/firewatir-1.6.5/lib/firewatir/element.rb:907:in `assert_exists'
from /Library/Ruby/Gems/1.8/gems/firewatir-1.6.5/lib/firewatir/element.rb:1266:in `method_missing'
from (irb):64

How would I open the frame directly?
The frame I want has an ID, even this doesn't help.

An Xpath search fails:
>> browser.element_by_xpath('//*[@id="main_ID"]')
=> #<FireWatir::Link:0x1a7fdcc located=false how=:jssh_name what=nil>


On 20-Apr-10, at 12:35 PM, Sean Walberg wrote:

If you RTSL a bit you'll see that calling browser.frame creates a new element but doesn't validate it actually found anything. When you call the html method it first asserts that the object exists and throws an exception if not.

The located=false comes from the element#inspect method, (which just taught me a new Ruby idiom: !!@o returns true if @o is a valid object or false if it isn't.) So located=false means that the object never existed, nor will it ever.

While poking around I saw a locate_frame method. Maybe that might work better? (It's actually possible that .frame uses locate_frame, I didn't trace it far enough)

Failing that, what about opening the frame directly?

Sean



On Tue, Apr 20, 2010 at 12:05 PM, Dan Martin <ummar143@shaw.ca> wrote:
As noted in the previous email
>> browser.frame("main")
=> #<FireWatir::Frame:0x1a90dd4 located=false how=:name what="main">

"located=false" seems to be Firewatir's way of saying that the object doesn't exist until I ask for it.
If I try to use it anyway, I get an unknown object exception

>> browser.frame("main").html
Watir::Exception::UnknownObjectException: Unable to locate element, using :name, "main"
from /Library/Ruby/Gems/1.8/gems/firewatir-1.6.5/lib/firewatir/element.rb:907:in `assert_exists'
from /Library/Ruby/Gems/1.8/gems/firewatir-1.6.5/lib/firewatir/elements/frame.rb:34:in `html'
from (irb):62

On 20-Apr-10, at 11:34 AM, Sean Walberg wrote:


Looking at the rdocs, http://wtr.rubyforge.org/rdoc/1.6.5/, have you tried

browser.frame("main").html

?

On Tue, Apr 20, 2010 at 10:51 AM, Dan Martin <ummar143@shaw.ca> wrote:
I am learning to navigate and scrape.  I have had more success with
Firewatir than Ruby mechanize, but both are poorly documented.

Current problem:  logging into a site webpage, Firwatir can see the
frames, but cannot access them.

 >> browser.show_frames
There are 3 frames
frame: name: topbar
      index: 1
frame: name: langFrame
      index: 2
frame: name: main
      index: 3
=> 0..2

 >> browser.frame(:index, 1)
=> #<FireWatir::Frame:0x1a9260c located=false how=:index what=1>

 >> browser.frame("main")
=> #<FireWatir::Frame:0x1a90dd4 located=false how=:name what="main">

Firefox shows the webpage source [I show only the top levels]
structure as:

<html>

<head>
       <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
       <title>TITLE</title>
       <link rel="stylesheet" href="all.css">

       <script language="JavaScript" src="WEBPAGE"></script>
       <script language="JavaScript">FUNCTIONS</script>
</head>

       <frameset rows="63,0,*" border="0" id="frameset_ID" framespacing="0"
frameborder="no" onload="loadHomepage(1);" onunload="forceLogout();">
               <frame src="/TDM/header.htm" name="topbar" scrolling="no"
noresize>STUFF IN HERE</frame>

               <frame name="langFrame" src="lang.html">STUFF IN HERE</frame>
               <frame src="" id="main_ID" name="main" noresize>STUFF IN HERE THAT I
WANT</frame>
       </frameset>

       <noframes>
               STUFF IN HERE
       </noframes>

</html>


I cannot access any forms etc included in the frame unless I can
name / access the frame.
Any ideas?

Dan Martin
GP Hospital Practitioner
Computer Scientist
ummar143@shaw.ca
(204) 831-1746
answering machine always on

_______________________________________________
Roundtable mailing list
Roundtable@muug.mb.ca
http://www.muug.mb.ca/mailman/listinfo/roundtable



--
Sean Walberg <sean@ertw.com>    http://ertw.com/
_______________________________________________
Roundtable mailing list
Roundtable@muug.mb.ca
http://www.muug.mb.ca/mailman/listinfo/roundtable

Dan Martin
GP Hospital Practitioner
Computer Scientist
(204) 831-1746
answering machine always on


_______________________________________________
Roundtable mailing list
Roundtable@muug.mb.ca
http://www.muug.mb.ca/mailman/listinfo/roundtable




--
Sean Walberg <sean@ertw.com>    http://ertw.com/
_______________________________________________
Roundtable mailing list
Roundtable@muug.mb.ca
http://www.muug.mb.ca/mailman/listinfo/roundtable

Dan Martin
GP Hospital Practitioner
Computer Scientist
(204) 831-1746
answering machine always on