watir-webdriver 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -7,6 +7,17 @@ See http://rubyforge.org/pipermail/wtr-development/2009-October/001313.html.
7
7
 
8
8
  http://jarib.github.com/watir-webdriver/doc/
9
9
 
10
+ = Example
11
+
12
+ require 'watir-webdriver'
13
+
14
+ browser = Watir::Browser.new :firefox
15
+ browser.goto "http://google.com"
16
+ browser.text_field(:name => 'q').set("WebDriver rocks!")
17
+ browser.button(:name => 'btnG').click
18
+ puts browser.url
19
+ browser.close
20
+
10
21
  = Description
11
22
 
12
23
  The file in lib/watir/elements/generated.rb is autogenerated from the HTML5 spec. This is done by extracting the IDL parts from the spec and processing them with the WebIDL gem (link below).
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.4
1
+ 0.0.5
@@ -13,7 +13,8 @@ module Watir
13
13
  @parent.assert_exists
14
14
 
15
15
  if @iframe
16
- return @iframe
16
+ switch_to_iframe(@iframe)
17
+ driver
17
18
  elsif @frame_id.nil?
18
19
  locate_iframe || locate_frame
19
20
  else
@@ -46,14 +47,19 @@ module Watir
46
47
 
47
48
  def locate_iframe
48
49
  # hack - frame doesn't have IFrame's attributes either
49
- @iframe = @element = IFrame.new(@parent, @selector).locate
50
+ @iframe = IFrame.new(@parent, @selector).locate
51
+
52
+ if @iframe
53
+ switch_to_iframe @iframe
54
+ driver
55
+ end
50
56
  end
51
57
 
52
58
  def locate_frame
53
59
  loc = VALID_LOCATORS.find { |loc| @selector[loc] }
54
60
 
55
61
  unless loc
56
- raise MissingWayOfFindingObjectException, "can only switch frames by #{VALID_LOCATORS.inspect}"
62
+ raise MissingWayOfFindingObjectException, "can only locate frames by #{VALID_LOCATORS.inspect}"
57
63
  end
58
64
 
59
65
  @frame_id = @selector[loc]
@@ -70,7 +76,26 @@ module Watir
70
76
  def switch!
71
77
  driver.switch_to.frame @frame_id
72
78
  rescue Selenium::WebDriver::Error::NoSuchFrameError => e
73
- raise Exception::UnknownFrameException, e.message
79
+ raise UnknownFrameException, e.message
80
+ end
81
+
82
+ def switch_to_iframe(element)
83
+ loc = [:id, :name].find { |e| not [nil, ""].include?(element.attribute(e)) }
84
+ if loc.nil?
85
+ raise MissingWayOfFindingObjectException, "can't switch to frame without :id or :name"
86
+ end
87
+
88
+ # TODO: get rid of this when we can switch to elements
89
+ # http://groups.google.com/group/selenium-developers/browse_thread/thread/428bd68e9e8bfecd/19a02ecd20835249
90
+
91
+ if @parent.kind_of? Frame
92
+ parent_id = @parent.instance_variable_get("@frame_id")
93
+ loc = [parent_id, element.attribute(loc)].join(".")
94
+ else
95
+ loc = element.attribute(loc)
96
+ end
97
+
98
+ driver.switch_to.frame loc
74
99
  end
75
100
 
76
101
  end # Frame
@@ -62,6 +62,13 @@ describe "Frame" do
62
62
  end
63
63
  end
64
64
 
65
+ it "handles nested frames" do
66
+ browser.goto(WatirSpec.host + "/nested_frames.html")
67
+
68
+ browser.frame(:id, "two").frame(:id, "three").link(:id => "four").click
69
+ browser.title.should == "definition_lists"
70
+ end
71
+
65
72
  it "raises TypeError when 'what' argument is invalid" do
66
73
  lambda { browser.frame(:id, 3.14).exists? }.should raise_error(TypeError)
67
74
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{watir-webdriver}
8
- s.version = "0.0.4"
8
+ s.version = "0.0.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jari Bakken"]
12
- s.date = %q{2010-07-22}
12
+ s.date = %q{2010-07-26}
13
13
  s.description = %q{WebDriver-backed Watir}
14
14
  s.email = %q{jari.bakken@gmail.com}
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: watir-webdriver
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 4
10
- version: 0.0.4
9
+ - 5
10
+ version: 0.0.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jari Bakken
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-07-22 00:00:00 +02:00
18
+ date: 2010-07-26 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency