I mean to grab the page the frame references, instead of having Watir figure it out.
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):64How 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").htmlWatir::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):62On 20-Apr-10, at 11:34 AM, Sean Walberg wrote:Looking at the rdocs, http://wtr.rubyforge.org/rdoc/1.6.5/, have you triedbrowser.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 MartinGP Hospital PractitionerComputer Scientist(204) 831-1746answering 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 MartinGP Hospital PractitionerComputer Scientist(204) 831-1746answering machine always on
_______________________________________________
Roundtable mailing list
Roundtable@muug.mb.ca
http://www.muug.mb.ca/mailman/listinfo/roundtable