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 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 ummar143@shaw.ca (204) 831-1746 answering machine always on