lib/celerity/elements/frame.rb in celerity-0.0.1 vs lib/celerity/elements/frame.rb in celerity-0.0.2

- old
+ new

@@ -1,43 +1,40 @@ module Celerity class Frame < Element include Container attr_accessor :page - TAGS = {'frame' => nil, 'iframe' => nil} + + TAGS = [Identifier.new('frame'), Identifier.new('iframe')] + ATTRIBUTES = BASE_ATTRIBUTES | [:longdesc, :name, :src, :frameborder, :marginwidth, :marginheight, :noresize, :scrolling] DEFAULT_HOW = :name def locate - # Log.debug(@container.object.inspect) - frame_elements = @container.object.getByXPath(".//iframe | .//frame").collect { |frame| frame.getEnclosedWindow.getFrameElement } - unless frame_elements.empty? - case @how - when :id, :name, :src, :class - matching_frame_elements = frame_elements.select { |frame_element| matches?(frame_element.getAttribute(@how.to_s), @what) } - if @frame_element = matching_frame_elements.first - @object = @frame_element.getEnclosedPage.getDocumentElement - end - when :index - if @frame_element = frame_elements[@what-1] - @object = @frame_element.getEnclosedPage.getDocumentElement - end - when :xpath - raise NotImplementedError - else - raise MissingWayOfFindingObjectException + super + if @object + @inline_frame_object = @object.getEnclosedWindow.getFrameElement + if (frame = @object.getEnclosedPage.getDocumentElement) + @object = frame + else + @object = nil end end - raise UnknownFrameException unless @object end + def assert_exists + locate unless @object + unless @object + raise UnknownFrameException, "unable to locate frame, using #{identifier_string}" + end + end + def update_page(value) - # Log.debug(value.asXml) @page_container.set_page(value.getEnclosingWindow.getTopWindow.getEnclosedPage) end def to_s assert_exists - create_string(@frame_element) + create_string(@inline_frame_object) end end end \ No newline at end of file