Sha256: 8121a25910aded6894428900b31fb95af56ca92469f0c68a6b3fa5240341338f

Contents?: true

Size: 1.4 KB

Versions: 4

Compression:

Stored size: 1.4 KB

Contents

module Watir
  class Frame < Element
    include PageContainer
    TAG = ['FRAME', 'IFRAME']

    attr_accessor :document

    # Find the frame denoted by how and what in the container and return its ole_object
    def locate
      frame, document = @container.locator_for(FrameLocator, @how, @what).locate
      if frame && document
        @o = frame
        begin
          @document = document.document
        rescue WIN32OLERuntimeError => e
          # This frame's content is not directly accessible but let the
          # user continue so they can access the frame properties            
          raise e unless e.message =~ /Access is denied/
        end        
      end
    end

    def __ole_inner_elements
      document.body.all
    end

    def initialize(container, how, what)
      set_container container
      @how = how
      @what = what
      copy_test_config container
    end
    
    def document
      assert_exists
      if @document
        @document
      else
        raise FrameAccessDeniedException, "IE will not allow access to this frame for security reasons. You can work around this with ie.goto(frame.src)"
      end
    end

    def document_mode
      document.documentMode
    end

    def attach_command
      @container.page_container.attach_command + ".frame(#{@how.inspect}, #{@what.inspect})".gsub('"','\'')
    end
    
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
watir-2.0.4 lib/watir/frame.rb
watir-2.0.3 lib/watir/frame.rb
watir-2.0.2 lib/watir/frame.rb
watir-2.0.2.rc1 lib/watir/frame.rb