bewildr 0.1.11 → 0.1.12

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -10,7 +10,7 @@ require 'cucumber/rake/task'
10
10
 
11
11
  spec = Gem::Specification.new do |s|
12
12
  s.name = 'bewildr'
13
- s.version = '0.1.11'
13
+ s.version = '0.1.12'
14
14
  s.has_rdoc = true
15
15
  s.extra_rdoc_files = ['README.rdoc', 'LICENSE']
16
16
  s.summary = 'Test WPF UI apps with IronRuby'
@@ -63,13 +63,10 @@ module Bewildr
63
63
  def wait_for_window(input, wait_time = 30)
64
64
  begin
65
65
  Timeout::timeout(wait_time) do
66
- begin
66
+ loop do
67
67
  my_window = window(input)
68
- raise if my_window.nil?
69
- return my_window
70
- rescue
68
+ return my_window unless my_window.nil?
71
69
  sleep 0.2
72
- retry
73
70
  end
74
71
  end
75
72
  rescue Timeout::Error
@@ -5,17 +5,14 @@ module Bewildr
5
5
  module ComboBoxAdditions
6
6
  #Returns a string array containing the element's item names
7
7
  def items
8
- my_list_items = list_items
9
- return nil if my_list_items.nil?
10
- my_list_items.collect {|item| item.name}
8
+ list_items.collect {|item| item.name}
11
9
  end
12
10
 
13
11
  #Returns an array containing the combobox items
14
12
  def list_items
15
13
  begin
16
14
  expand_combo
17
- bewildr_list_items = get(:type => :list_item, :scope => :children, :how_many => :all)
18
- bewildr_list_items.nil? ? nil : bewildr_list_items
15
+ get(:type => :list_item, :scope => :children, :how_many => :all)
19
16
  ensure
20
17
  collapse_combo
21
18
  end
@@ -23,8 +20,7 @@ module Bewildr
23
20
 
24
21
  #Returns the number of items in the combobox
25
22
  def count
26
- my_items = items
27
- my_items.nil? ? 0 : my_items.size
23
+ items.size
28
24
  end
29
25
 
30
26
  #Selects a combobox item. Takes a string (and selects the first item whose name matches) or an integer and selects the respective element
@@ -5,28 +5,23 @@ module Bewildr
5
5
  module ListAdditions
6
6
  #Select the list item whose name matches the supplied input
7
7
  def select(input)
8
- selectable_elements = get(:type => :list_item, :scope => :children, :how_many => :all)
9
- selectable_elements.find {|selectable_element| selectable_element.name == input}.select
8
+ list_items.find {|selectable_element| selectable_element.name == input}.select
10
9
  end
11
10
 
12
11
  #Returns a string array containing the list item names
13
12
  def items
14
- my_list_items = list_items
15
- return nil if my_list_items.nil?
16
- my_list_items.collect {|item| item.name}
13
+ list_items.collect {|item| item.name}
17
14
  end
18
15
 
19
16
  #Returns an array containing the list items
20
17
  def list_items
21
18
  prepare_element
22
- bewildr_list_items = get(:type => :list_item, :scope => :children, :how_many => :all)
23
- bewildr_list_items.nil? ? nil : bewildr_list_items
19
+ get(:type => :list_item, :scope => :children, :how_many => :all)
24
20
  end
25
21
 
26
22
  #Returns the number of items in the list
27
23
  def count
28
- my_items = items
29
- my_items.nil? ? 0 : my_items.size
24
+ items.size
30
25
  end
31
26
 
32
27
  #Selects a list item. Takes a string (and selects the first item whose name matches) or an integer and selects the respective element
@@ -107,12 +107,7 @@ module Bewildr
107
107
  case result
108
108
  when System::Windows::Automation::AutomationElement, nil then return Bewildr::Element.new(result)
109
109
  when System::Windows::Automation::AutomationElementCollection
110
- c_array_list = System::Collections::ArrayList.new(result)
111
- element_array = c_array_list.to_array.to_a
112
- case
113
- when element_array.size == 0 then return Bewildr::Element.new(nil)
114
- when element_array.size > 0 then return element_array.collect {|element| Bewildr::Element.new(element) }
115
- end
110
+ System::Collections::ArrayList.new(result).to_array.to_a.collect {|element| Bewildr::Element.new(element) }
116
111
  end
117
112
  end
118
113
 
@@ -148,6 +143,20 @@ module Bewildr
148
143
  bewildred_children
149
144
  end
150
145
 
146
+ #Returns the current element's next sibling, or nil if there is no next sibling
147
+ def next_sibling
148
+ walker = System::Windows::Automation::TreeWalker.ControlViewWalker
149
+ potential_next_sibling = walker.get_next_sibling(@automation_element)
150
+ potential_next_sibling.nil? ? nil : Bewildr::Element.new(potential_next_sibling)
151
+ end
152
+
153
+ #Returns the current element's previous sibling, or nil if there is no previous sibling
154
+ def previous_sibling
155
+ walker = System::Windows::Automation::TreeWalker.ControlViewWalker
156
+ potential_previous_sibling = walker.get_previous_sibling(@automation_element)
157
+ potential_previous_sibling.nil? ? nil : Bewildr::Element.new(potential_previous_sibling)
158
+ end
159
+
151
160
  #Clicks this element - this is done by actual mouse moves and clicks. The automation element's underlying InvokePattern is not used.
152
161
  def click
153
162
  Bewildr::Mouse.click(clickable_point)
@@ -17,7 +17,7 @@ module Bewildr
17
17
  #These keys can be combined to create more complex search criteria
18
18
  def condition_for(condition_hash)
19
19
  conditions = condition_hash.select {|key, value| [:id, :name, :type].include?(key) }
20
- conditions = Hash[*conditions.flatten] if RUBY_VERSION == "1.8.6"
20
+ conditions = Hash[*conditions.flatten] if conditions.instance_of?(Array) #if condition deals with ironruby's 1.8.6 emulation
21
21
 
22
22
  case
23
23
  when conditions.length == 0 then raise "Condition needs to include at least an :id, a :name or a :type"
@@ -41,7 +41,7 @@ class Bewildr::Mouse
41
41
  instance.clickr.set_location(point)
42
42
  end
43
43
 
44
- #Drags the mouse from one location to another, and optionally, via another! Pass a has containing the following keys:
44
+ #Drags the mouse from one location to another, and optionally, via another! Pass a hash containing the following keys:
45
45
  # :from
46
46
  # :to
47
47
  # :via (optional)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bewildr
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 3
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 11
10
- version: 0.1.11
9
+ - 12
10
+ version: 0.1.12
11
11
  platform: ruby
12
12
  authors:
13
13
  - Nat Ritmeyer
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-10 00:00:00 +00:00
18
+ date: 2011-04-26 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency