Method: Insite::Element#initialize
- Defined in:
- lib/insite/element/element.rb
#initialize(query_scope, *args) ⇒ Element
Returns a new instance of Element.
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/insite/element/element.rb', line 37 def initialize(query_scope, *args) query_scope.respond_to?(:target) ? obj = query_scope : obj = query_scope.site @query_scope = obj @site = query_scope.class.ancestors.include?(Insite) ? query_scope : query_scope.site @browser = @site.browser if args[0].is_a?(Insite::Element) || args[0].is_a?(Watir::Element) @target = args[0].target @selector = @target.selector.dup @args = @selector elsif args[0].is_a?(Insite::ElementCollection) || args[0].is_a?(Watir::ElementCollection) @args = nil @selector = @target.instance_variable_get(:@selector).dup @args = @selector else if [Insite::Element, Insite::HTMLElement].include?(self.class) @args = parse_args(args.dup) elsif tag = parse_args(args)[:tag_name] @args = parse_args(args.dup) elsif Insite.class_to_tag(self.class) @args = parse_args(args.dup).merge( tag_name: Insite.class_to_tag(self.class) ) else @args = parse_args(args.dup) end # Figure out the correct query scope. @non_relative = @args.delete(:non_relative) || false if @non_relative @query_scope = query_scope.site else query_scope.respond_to?(:target) ? obj = query_scope : obj = query_scope.site @query_scope = obj end @selector = @args if watir_class = Insite::CLASS_MAP.key(self.class) @target = watir_class.new(@query_scope.target, @args) else @target = Watir::HTMLElement.new(@query_scope.target, @args) end end end |