bewildr 0.1.13 → 0.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. data/lib/bewildr.rb +0 -1
  2. data/lib/bewildr/bewildr_helpers.rb +1 -1
  3. data/lib/bewildr/control_patterns/expand_collapse_pattern.rb +1 -1
  4. data/lib/bewildr/control_patterns/grid_pattern.rb +1 -1
  5. data/lib/bewildr/control_patterns/range_value_pattern.rb +1 -1
  6. data/lib/bewildr/control_patterns/scroll_pattern.rb +1 -1
  7. data/lib/bewildr/control_patterns/selection_item_pattern.rb +1 -1
  8. data/lib/bewildr/control_patterns/selection_pattern.rb +1 -1
  9. data/lib/bewildr/control_patterns/table_item_pattern.rb +1 -1
  10. data/lib/bewildr/control_patterns/table_pattern.rb +1 -1
  11. data/lib/bewildr/control_patterns/text_pattern.rb +1 -1
  12. data/lib/bewildr/control_patterns/toggle_pattern.rb +2 -2
  13. data/lib/bewildr/control_patterns/value_pattern.rb +1 -1
  14. data/lib/bewildr/control_patterns/window_pattern.rb +1 -1
  15. data/lib/bewildr/control_type.rb +1 -1
  16. data/lib/bewildr/control_type_additions/combo_box_additions.rb +1 -1
  17. data/lib/bewildr/control_type_additions/data_grid_additions.rb +1 -1
  18. data/lib/bewildr/control_type_additions/document_additions.rb +1 -1
  19. data/lib/bewildr/control_type_additions/list_additions.rb +1 -1
  20. data/lib/bewildr/control_type_additions/menu_additions.rb +1 -1
  21. data/lib/bewildr/control_type_additions/menu_item_additions.rb +1 -1
  22. data/lib/bewildr/control_type_additions/scroll_additions.rb +2 -2
  23. data/lib/bewildr/control_type_additions/tab_additions.rb +1 -1
  24. data/lib/bewildr/control_type_additions/text_additions.rb +1 -1
  25. data/lib/bewildr/control_type_additions/tree_additions.rb +1 -1
  26. data/lib/bewildr/control_type_additions/tree_item_additions.rb +1 -1
  27. data/lib/bewildr/control_type_additions/window_additions.rb +1 -1
  28. data/lib/bewildr/element.rb +17 -1
  29. data/lib/bewildr/exceptions.rb +14 -1
  30. data/lib/bewildr/ext/extensions.rb +14 -1
  31. data/lib/bewildr/finder.rb +1 -1
  32. metadata +21 -58
  33. data/Rakefile +0 -53
@@ -20,7 +20,6 @@ CLICKR = Bewildr::Clickr::Clickr.new
20
20
  #load plain old ruby libraries
21
21
  require 'timeout'
22
22
  require 'singleton'
23
- require 'active_support/core_ext/string/inflections'
24
23
 
25
24
  #require ruby extensions
26
25
  require 'bewildr/ext/extensions'
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- module BewildrHelpers
4
+ module BewildrHelpers #:nodoc: all
5
5
  def r_array_to_cs_array_of_strings(args)
6
6
  System::Array[System::String].new(args.map {|arg| arg.to_s.to_clr_string})
7
7
  end
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- module ControlPatterns
4
+ module ControlPatterns #:nodoc:
5
5
  module ExpandCollapsePattern
6
6
  #Expands the element - use to open combo boxes
7
7
  def expand
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- module ControlPatterns
4
+ module ControlPatterns #:nodoc:
5
5
  module GridPattern
6
6
  #Returns the number of rows in the grid
7
7
  def row_count
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- module ControlPatterns
4
+ module ControlPatterns #:nodoc:
5
5
  module RangeValuePattern
6
6
  #Returns the current value of the element
7
7
  def value
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- module ControlPatterns
4
+ module ControlPatterns #:nodoc:
5
5
  module ScrollPattern
6
6
  #Returns true if the element is vertically scrollable, false if it's not
7
7
  def vertically_scrollable
@@ -2,7 +2,7 @@
2
2
  # and open the template in the editor.
3
3
 
4
4
  module Bewildr
5
- module ControlPatterns
5
+ module ControlPatterns #:nodoc:
6
6
  module SelectionItemPattern
7
7
  #Selects the element
8
8
  def select
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- module ControlPatterns
4
+ module ControlPatterns #:nodoc:
5
5
  module SelectionPattern
6
6
  #Returns the elements that are selected
7
7
  def get_selection
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- module ControlPatterns
4
+ module ControlPatterns #:nodoc:
5
5
  module TableItemPattern
6
6
  #Returns the number of rows the element spans
7
7
  def row_span
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- module ControlPatterns
4
+ module ControlPatterns #:nodoc:
5
5
  module TablePattern
6
6
  #Returns an array of elements containing the column headers
7
7
  def column_headers
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.s
2
2
 
3
3
  module Bewildr
4
- module ControlPatterns
4
+ module ControlPatterns #:nodoc:
5
5
  module TextPattern
6
6
  #Selects all of the text in the element
7
7
  def select_all
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- module ControlPatterns
4
+ module ControlPatterns #:nodoc:
5
5
  module TogglePatternForButton
6
6
  #Toggle on the element
7
7
  def toggle_on
@@ -64,7 +64,7 @@ module Bewildr
64
64
 
65
65
  #These are not the toggle patterns you are looking for [wave of the hand/]. If you are dealing with a button, look for Bewildr::ControlPatterns::TogglePatternForButton.
66
66
  #If you're dealing with a checkbox, take a look at Bewildr::ControlPatterns::TogglePatternForCheckBox
67
- module TogglePattern
67
+ module TogglePattern #:nodoc:
68
68
  def self.extended(base)
69
69
  base.instance_eval do
70
70
  case @control_type
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- module ControlPatterns
4
+ module ControlPatterns #:nodoc:
5
5
  module ValuePattern
6
6
  #Returns true if the element is a password field, false if it's not
7
7
  def password_field?
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- module ControlPatterns
4
+ module ControlPatterns #:nodoc:
5
5
  module WindowPattern
6
6
  #Closes the window
7
7
  def close
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- class ControlType
4
+ class ControlType #:nodoc: all
5
5
  class << self
6
6
  def symbol_for_enum(input_control_type_enum)
7
7
  raise "Unknown control type: #{input_control_type_enum}" unless @@control_type_map.value?(input_control_type_enum)
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- module ControlTypeAdditions
4
+ module ControlTypeAdditions #:nodoc:
5
5
  module ComboBoxAdditions
6
6
  #Returns a string array containing the element's item names
7
7
  def items
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- module ControlTypeAdditions
4
+ module ControlTypeAdditions #:nodoc:
5
5
  module DataGridAdditions
6
6
  #Returns the cell at the supplied row and column
7
7
  def cell(row, column)
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- module ControlTypeAdditions
4
+ module ControlTypeAdditions #:nodoc:
5
5
  module DocumentAdditions
6
6
  #Returns the document text
7
7
  def text
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- module ControlTypeAdditions
4
+ module ControlTypeAdditions #:nodoc:
5
5
  module ListAdditions
6
6
  #Select the list item whose name matches the supplied input
7
7
  def select(input)
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- module ControlTypeAdditions
4
+ module ControlTypeAdditions #:nodoc:
5
5
  module MenuAdditions
6
6
  #Returns an array containing the menu's root items
7
7
  def root_menu_items
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- module ControlTypeAdditions
4
+ module ControlTypeAdditions #:nodoc:
5
5
  module MenuItemAdditions
6
6
  def sub_menus
7
7
  get(:type => :menu_item, :scope => :children, :how_many => :all)
@@ -1,8 +1,8 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- module ControlTypeAdditions
5
- module ScrollAdditions
4
+ module ControlTypeAdditions #:nodoc:
5
+ module ScrollAdditions #:nodoc: all
6
6
  #required because when a list is displayed, UI Automation only knows
7
7
  #about the visible items. This method stores where the scroll value is,
8
8
  #then moves the scroller to the top of the scroll bar and proceeds to
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- module ControlTypeAdditions
4
+ module ControlTypeAdditions #:nodoc:
5
5
  module TabAdditions
6
6
  #Selects the tab whose name matches the input
7
7
  def select(input)
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- module ControlTypeAdditions
4
+ module ControlTypeAdditions #:nodoc:
5
5
  module TextAdditions
6
6
  #Returns the element's text
7
7
  def text
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- module ControlTypeAdditions
4
+ module ControlTypeAdditions #:nodoc:
5
5
  module TreeAdditions
6
6
  #Returns an array containing the tree's root nodes
7
7
  def root_nodes
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- module ControlTypeAdditions
4
+ module ControlTypeAdditions #:nodoc:
5
5
  module TreeItemAdditions
6
6
  #Returns the tree item's child nodes
7
7
  def child_nodes
@@ -1,7 +1,7 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
- module ControlTypeAdditions
4
+ module ControlTypeAdditions #:nodoc:
5
5
  module WindowAdditions
6
6
  #Returns true if the window is open, false if it's not
7
7
  def open?
@@ -197,6 +197,22 @@ module Bewildr
197
197
  @automation_element.current.bounding_rectangle.width.to_i
198
198
  end
199
199
 
200
+ #Drags this element to a target element; optionally via a different element. Takes a hash with the following:
201
+ # :to => some_element
202
+ # :via => another_element (optional)
203
+ # :wait_at_via_for => seconds (optional)
204
+ #Eg:
205
+ # my_element.drag :to => some_element
206
+ #or...
207
+ # my_element.drag :via => another_element, :to => some_element
208
+ #or, if you need to hover over the via_element for 2.5 seconds:
209
+ # my_element.drag :via => another_element, :to => some_element, :wait_at_via_for => 2.5
210
+ def drag(target_details)
211
+ drag_args = target_details
212
+ drag_args[:from] = self
213
+ Bewildr::Mouse.drag(drag_args)
214
+ end
215
+
200
216
  private
201
217
 
202
218
  #Raises an exception if this element no longer exists
@@ -227,7 +243,7 @@ module Bewildr
227
243
  #list of control types comes from http://msdn.microsoft.com/en-us/library/ms750574.aspx
228
244
  def include_additions
229
245
  #the following looks like could have performance issues, but the tests don't take any longer to execute...
230
- potential_addition = Bewildr::ControlTypeAdditions.submodules.select {|mod| mod.name.demodulize == "#{@control_type.to_s.classify}Additions"}.first
246
+ potential_addition = Bewildr::ControlTypeAdditions.submodules.select {|mod| mod.name.bewildr_demodulize == "#{@control_type.to_s.bewildr_classify}Additions"}.first
231
247
  extend potential_addition unless potential_addition.nil?
232
248
 
233
249
  #non-standards - move this to another method in the near future
@@ -1,11 +1,24 @@
1
1
  #Copyright (c) 2010, Nathaniel Ritmeyer. All rights reserved.
2
2
 
3
3
  module Bewildr
4
+ #Raised by a disabled element when a method is called on it assuming it is enabled
4
5
  class ElementNotEnabled < StandardError; end
6
+
7
+ #Raised by an element marked as non existent when a method is called on it assuming it exists
5
8
  class ElementDoesntExist < StandardError; end
9
+
10
+ #Raised by a password field element on an attempt to read its text value
6
11
  class PasswordFieldReadAttempt < StandardError; end
12
+
13
+ #Raised by a combo box on trying to select an item that does not exist in its list of values
7
14
  class NoSuchItemInComboBox < StandardError; end
15
+
16
+ #Raised by a list box on trying to select an item that does not exist in its list of values
8
17
  class NoSuchItemInListBox < StandardError; end
18
+
19
+ #Raised by a tab group on trying to use a tab that does not exist
9
20
  class NoSuchTab < StandardError; end
10
- class InternalError < StandardError; end
21
+
22
+ class InternalError < StandardError #:nodoc: all
23
+ end
11
24
  end
@@ -3,8 +3,21 @@
3
3
  #the following taken from: http://www.natontesting.com/2010/06/30/how-to-get-the-submodules-of-a-ruby-module/
4
4
 
5
5
  #adds the submodules method to modules - returns a list of submodules in the module's namespace
6
- class Module
6
+ class Module #:nodoc: all
7
7
  def submodules
8
8
  constants.collect {|const_name| const_get(const_name)}.select {|const| const.class == Module}
9
9
  end
10
10
  end
11
+
12
+ #removes need for active support
13
+ class String #:nodoc: all
14
+ #directly stolen from active support - takes the module bit off a class name
15
+ def bewildr_demodulize
16
+ gsub(/^.*::/, '')
17
+ end
18
+
19
+ #Kinda like classify from active support, but does only what's needed by bewildr
20
+ def bewildr_classify
21
+ self.split("_").collect {|word| "#{word[0].upcase}#{word[1..-1]}"}.join
22
+ end
23
+ end
@@ -5,7 +5,7 @@ module Bewildr
5
5
  #methods that build up the parts needed for to search for elements. These methods are called by Bewildr::Element#get in
6
6
  #order to get and test for existence of descendent elements in the UI element tree. All of the methods take a condition
7
7
  #hash, this is made up of at least one, but can be several key/value pairs.
8
- class Finder
8
+ class Finder #:nodoc: all
9
9
  extend Bewildr::BewildrHelpers
10
10
 
11
11
  class << self
metadata CHANGED
@@ -1,52 +1,26 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: bewildr
3
- version: !ruby/object:Gem::Version
4
- hash: 1
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 1
9
- - 13
10
- version: 0.1.13
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.14
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Nat Ritmeyer
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-07-05 00:00:00 +01:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- name: activesupport
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 7
30
- segments:
31
- - 3
32
- - 0
33
- - 0
34
- version: 3.0.0
35
- type: :runtime
36
- version_requirements: *id001
12
+ date: 2011-11-06 00:00:00.000000000Z
13
+ dependencies: []
37
14
  description: Test WPF UI apps with IronRuby
38
15
  email: nat@natontesting.com
39
16
  executables: []
40
-
41
17
  extensions: []
42
-
43
- extra_rdoc_files:
18
+ extra_rdoc_files:
44
19
  - README.rdoc
45
20
  - LICENSE
46
- files:
21
+ files:
47
22
  - LICENSE
48
23
  - README.rdoc
49
- - Rakefile
50
24
  - lib/bewildr/application.rb
51
25
  - lib/bewildr/bewildr_helpers.rb
52
26
  - lib/bewildr/control_patterns/expand_collapse_pattern.rb
@@ -82,39 +56,28 @@ files:
82
56
  - lib/bewildr/mouse.rb
83
57
  - lib/bewildr/windows.rb
84
58
  - lib/bewildr.rb
85
- has_rdoc: true
86
59
  homepage: http://www.bewildr.info
87
60
  licenses: []
88
-
89
61
  post_install_message:
90
62
  rdoc_options: []
91
-
92
- require_paths:
63
+ require_paths:
93
64
  - lib
94
- required_ruby_version: !ruby/object:Gem::Requirement
65
+ required_ruby_version: !ruby/object:Gem::Requirement
95
66
  none: false
96
- requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- hash: 3
100
- segments:
101
- - 0
102
- version: "0"
103
- required_rubygems_version: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ required_rubygems_version: !ruby/object:Gem::Requirement
104
72
  none: false
105
- requirements:
106
- - - ">="
107
- - !ruby/object:Gem::Version
108
- hash: 3
109
- segments:
110
- - 0
111
- version: "0"
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
112
77
  requirements: []
113
-
114
78
  rubyforge_project:
115
- rubygems_version: 1.3.7
79
+ rubygems_version: 1.8.11
116
80
  signing_key:
117
81
  specification_version: 3
118
82
  summary: Test WPF UI apps with IronRuby
119
83
  test_files: []
120
-
data/Rakefile DELETED
@@ -1,53 +0,0 @@
1
- require 'rubygems'
2
- require 'rake'
3
- require 'rake/clean'
4
- require 'rake/gempackagetask'
5
- require 'rake/rdoctask'
6
- require 'rake/testtask'
7
- require 'spec/rake/spectask'
8
- require 'cucumber'
9
- require 'cucumber/rake/task'
10
-
11
- spec = Gem::Specification.new do |s|
12
- s.name = 'bewildr'
13
- s.version = '0.1.13'
14
- s.has_rdoc = true
15
- s.extra_rdoc_files = ['README.rdoc', 'LICENSE']
16
- s.summary = 'Test WPF UI apps with IronRuby'
17
- s.description = s.summary
18
- s.author = 'Nat Ritmeyer'
19
- s.email = 'nat@natontesting.com'
20
- s.homepage = 'http://www.bewildr.info'
21
- s.files = %w(LICENSE README.rdoc Rakefile) + Dir.glob("{bin,lib}/**/*")
22
- s.require_path = "lib"
23
- s.bindir = "bin"
24
- s.add_dependency('activesupport', '>= 3.0.0')
25
- end
26
-
27
- Rake::GemPackageTask.new(spec) do |p|
28
- p.gem_spec = spec
29
- p.need_tar = true
30
- p.need_zip = true
31
- end
32
-
33
- Rake::RDocTask.new do |rdoc|
34
- files =['README.rdoc', 'LICENSE', 'lib/**/*.rb']
35
- rdoc.rdoc_files.add(files)
36
- rdoc.main = "README.rdoc" # page to start on
37
- rdoc.title = "bewildr Docs"
38
- rdoc.rdoc_dir = 'doc/rdoc' # rdoc output folder
39
- rdoc.options << '--line-numbers'
40
- end
41
-
42
- Rake::TestTask.new do |t|
43
- t.test_files = FileList['test/**/*.rb']
44
- end
45
-
46
- Spec::Rake::SpecTask.new do |t|
47
- t.spec_files = FileList['spec/**/*.rb']
48
- t.libs << Dir["lib"]
49
- end
50
-
51
- Cucumber::Rake::Task.new(:features) do |t|
52
- t.cucumber_opts = "--format pretty -q"
53
- end