I mean to grab the page the frame references, instead of having Watir figure it out.

I'm just trying to think what I'd do with Mech, as I've never heard of Watir until now.

Sean

On Tue, Apr 20, 2010 at 1:20 PM, Dan Martin <ummar143@shaw.ca> wrote:
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


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




--
Sean Walberg <sean@ertw.com>    http://ertw.com/