watir-webdriver 0.0.3 → 0.0.4
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.
- data/VERSION +1 -1
- data/lib/watir-webdriver/base_element.rb +10 -12
- data/lib/watir-webdriver/elements/input.rb +1 -1
- data/lib/watir-webdriver/locators/element_locator.rb +31 -10
- data/lib/watir-webdriver/locators/text_field_locator.rb +2 -2
- data/spec/watirspec/image_spec.rb +14 -14
- data/spec/watirspec/option_spec.rb +0 -2
- data/watir-webdriver.gemspec +2 -2
- metadata +4 -4
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            0.0. | 
| 1 | 
            +
            0.0.4
         | 
| @@ -71,21 +71,21 @@ module Watir | |
| 71 71 | 
             
                  def define_string_attribute(mname, aname)
         | 
| 72 72 | 
             
                    define_method mname do
         | 
| 73 73 | 
             
                      assert_exists
         | 
| 74 | 
            -
                       | 
| 74 | 
            +
                      @element.attribute(aname).to_s
         | 
| 75 75 | 
             
                    end
         | 
| 76 76 | 
             
                  end
         | 
| 77 77 |  | 
| 78 78 | 
             
                  def define_boolean_attribute(mname, aname)
         | 
| 79 79 | 
             
                    define_method mname do
         | 
| 80 80 | 
             
                      assert_exists
         | 
| 81 | 
            -
                       | 
| 81 | 
            +
                      !!@element.attribute(aname)
         | 
| 82 82 | 
             
                    end
         | 
| 83 83 | 
             
                  end
         | 
| 84 84 |  | 
| 85 85 | 
             
                  def define_int_attribute(mname, aname)
         | 
| 86 86 | 
             
                    define_method mname do
         | 
| 87 87 | 
             
                      assert_exists
         | 
| 88 | 
            -
                       | 
| 88 | 
            +
                      @element.attribute(aname).to_i
         | 
| 89 89 | 
             
                    end
         | 
| 90 90 | 
             
                  end
         | 
| 91 91 |  | 
| @@ -225,12 +225,16 @@ module Watir | |
| 225 225 |  | 
| 226 226 | 
             
                def value
         | 
| 227 227 | 
             
                  assert_exists
         | 
| 228 | 
            -
             | 
| 228 | 
            +
             | 
| 229 | 
            +
                  begin
         | 
| 230 | 
            +
                    @element.value
         | 
| 231 | 
            +
                  rescue WebDriver::Error::ElementNotEnabledError
         | 
| 232 | 
            +
                    ""
         | 
| 233 | 
            +
                  end
         | 
| 229 234 | 
             
                end
         | 
| 230 235 |  | 
| 231 236 | 
             
                def attribute_value(attribute_name)
         | 
| 232 237 | 
             
                  assert_exists
         | 
| 233 | 
            -
                  # should rescue?
         | 
| 234 238 | 
             
                  @element.attribute attribute_name
         | 
| 235 239 | 
             
                end
         | 
| 236 240 |  | 
| @@ -291,7 +295,7 @@ module Watir | |
| 291 295 | 
             
                    assert_exists
         | 
| 292 296 | 
             
                    @element.style property
         | 
| 293 297 | 
             
                  else
         | 
| 294 | 
            -
                     | 
| 298 | 
            +
                    attribute_value "style" || ''
         | 
| 295 299 | 
             
                  end
         | 
| 296 300 | 
             
                end
         | 
| 297 301 |  | 
| @@ -338,12 +342,6 @@ module Watir | |
| 338 342 | 
             
                  raise ObjectReadOnlyException if respond_to?(:readonly?) && readonly?
         | 
| 339 343 | 
             
                end
         | 
| 340 344 |  | 
| 341 | 
            -
                def rescue_no_match(returned = "", &blk)
         | 
| 342 | 
            -
                  yield
         | 
| 343 | 
            -
                rescue WebDriver::Error::ElementNotEnabledError
         | 
| 344 | 
            -
                  returned
         | 
| 345 | 
            -
                end
         | 
| 346 | 
            -
             | 
| 347 345 | 
             
                def extract_selector(selectors)
         | 
| 348 346 | 
             
                  case selectors.size
         | 
| 349 347 | 
             
                  when 2
         | 
| @@ -4,16 +4,16 @@ module Watir | |
| 4 4 | 
             
                include Watir::Exception
         | 
| 5 5 | 
             
                include Selenium
         | 
| 6 6 |  | 
| 7 | 
            -
                WD_FINDERS =  [ | 
| 8 | 
            -
                  :class, | 
| 9 | 
            -
                  :class_name, | 
| 7 | 
            +
                WD_FINDERS =  [
         | 
| 8 | 
            +
                  :class,
         | 
| 9 | 
            +
                  :class_name,
         | 
| 10 10 | 
             
                  :css,
         | 
| 11 | 
            -
                  :id, | 
| 11 | 
            +
                  :id,
         | 
| 12 12 | 
             
                  :link,
         | 
| 13 | 
            -
                  :link_text, | 
| 14 | 
            -
                  :name, | 
| 15 | 
            -
                  :partial_link_text, | 
| 16 | 
            -
                  :tag_name, | 
| 13 | 
            +
                  :link_text,
         | 
| 14 | 
            +
                  :name,
         | 
| 15 | 
            +
                  :partial_link_text,
         | 
| 16 | 
            +
                  :tag_name,
         | 
| 17 17 | 
             
                  :xpath
         | 
| 18 18 | 
             
                ]
         | 
| 19 19 |  | 
| @@ -124,6 +124,14 @@ module Watir | |
| 124 124 |  | 
| 125 125 | 
             
                def wd_find_by_regexp_selector(selector, method = :find)
         | 
| 126 126 | 
             
                  rx_selector = delete_regexps_from(selector)
         | 
| 127 | 
            +
             | 
| 128 | 
            +
                  if rx_selector.has_key?(:label) && should_use_label_element?
         | 
| 129 | 
            +
                    label_exp = rx_selector.delete(:label)
         | 
| 130 | 
            +
                    label     = @wd.find_elements(:tag_name, 'label').find { |e| matches_selector?({:text => label_exp}, e) } || return
         | 
| 131 | 
            +
             | 
| 132 | 
            +
                    selector[:id] = label.attribute(:for)
         | 
| 133 | 
            +
                  end
         | 
| 134 | 
            +
             | 
| 127 135 | 
             
                  xpath = build_xpath(selector) || raise("internal error: unable to build xpath from #{@selector.inspect}")
         | 
| 128 136 |  | 
| 129 137 | 
             
                  elements = @wd.find_elements(:xpath, xpath)
         | 
| @@ -202,7 +210,7 @@ module Watir | |
| 202 210 | 
             
                end
         | 
| 203 211 |  | 
| 204 212 | 
             
                def assert_valid_as_attribute(attribute)
         | 
| 205 | 
            -
                   | 
| 213 | 
            +
                  unless valid_attribute? attribute
         | 
| 206 214 | 
             
                    raise MissingWayOfFindingObjectException, "invalid attribute: #{attribute.inspect}"
         | 
| 207 215 | 
             
                  end
         | 
| 208 216 | 
             
                end
         | 
| @@ -227,6 +235,14 @@ module Watir | |
| 227 235 | 
             
                  tag_name === element.tag_name
         | 
| 228 236 | 
             
                end
         | 
| 229 237 |  | 
| 238 | 
            +
                def valid_attribute?(attribute)
         | 
| 239 | 
            +
                  @valid_attributes && @valid_attributes.include?(attribute)
         | 
| 240 | 
            +
                end
         | 
| 241 | 
            +
             | 
| 242 | 
            +
                def should_use_label_element?
         | 
| 243 | 
            +
                  @selector[:tag_name] != "option"
         | 
| 244 | 
            +
                end
         | 
| 245 | 
            +
             | 
| 230 246 | 
             
                def build_xpath(selectors)
         | 
| 231 247 | 
             
                  return if selectors.values.any? { |e| e.kind_of? Regexp }
         | 
| 232 248 |  | 
| @@ -260,7 +276,12 @@ module Watir | |
| 260 276 | 
             
                end
         | 
| 261 277 |  | 
| 262 278 | 
             
                def equal_pair(key, value)
         | 
| 263 | 
            -
                   | 
| 279 | 
            +
                  # we assume :label means a corresponding label element, not the attribute
         | 
| 280 | 
            +
                  if key == :label && should_use_label_element?
         | 
| 281 | 
            +
                    "@id=//label[normalize-space()='#{value}']/@for"
         | 
| 282 | 
            +
                  else
         | 
| 283 | 
            +
                    "#{lhs_for(key)}='#{value}'"
         | 
| 284 | 
            +
                  end
         | 
| 264 285 | 
             
                end
         | 
| 265 286 |  | 
| 266 287 | 
             
                def lhs_for(key)
         | 
| @@ -32,9 +32,9 @@ module Watir | |
| 32 32 | 
             
                end
         | 
| 33 33 |  | 
| 34 34 | 
             
                def lhs_for(key)
         | 
| 35 | 
            -
                  if @building == :input &&  | 
| 35 | 
            +
                  if @building == :input && key == :text
         | 
| 36 36 | 
             
                    "@value"
         | 
| 37 | 
            -
                  elsif @building == :textarea &&  | 
| 37 | 
            +
                  elsif @building == :textarea && :value == :key
         | 
| 38 38 | 
             
                    "text()"
         | 
| 39 39 | 
             
                  else
         | 
| 40 40 | 
             
                    super
         | 
| @@ -122,7 +122,7 @@ describe "Image" do | |
| 122 122 | 
             
              end
         | 
| 123 123 |  | 
| 124 124 | 
             
              # File methods
         | 
| 125 | 
            -
               | 
| 125 | 
            +
              not_compliant_on :watir, :webdriver do # "WTR-347"
         | 
| 126 126 | 
             
                describe "#file_created_date" do
         | 
| 127 127 | 
             
                  it "returns the date the image was created as reported by the file system" do
         | 
| 128 128 | 
             
                    browser.goto(WatirSpec.host + "/images.html")
         | 
| @@ -134,7 +134,7 @@ describe "Image" do | |
| 134 134 | 
             
              end
         | 
| 135 135 |  | 
| 136 136 |  | 
| 137 | 
            -
               | 
| 137 | 
            +
              not_compliant_on :watir, :webdriver do  # WTR-346
         | 
| 138 138 | 
             
                describe "#file_size" do
         | 
| 139 139 | 
             
                  it "returns the file size of the image if the image exists" do
         | 
| 140 140 | 
             
                    browser.image(:id, 'square').file_size.should == File.size("#{WatirSpec.files}/images/square.jpg".sub("file://", ''))
         | 
| @@ -172,7 +172,7 @@ describe "Image" do | |
| 172 172 |  | 
| 173 173 | 
             
              # Other
         | 
| 174 174 |  | 
| 175 | 
            -
              not_compliant_on | 
| 175 | 
            +
              not_compliant_on :webdriver do
         | 
| 176 176 | 
             
                describe "#loaded?" do
         | 
| 177 177 | 
             
                  it "returns true if the image has been loaded" do
         | 
| 178 178 | 
             
                    browser.image(:title, 'Circle').should be_loaded
         | 
| @@ -191,20 +191,20 @@ describe "Image" do | |
| 191 191 | 
             
                    lambda { browser.image(:index, 1337).loaded? }.should raise_error(UnknownObjectException)
         | 
| 192 192 | 
             
                  end
         | 
| 193 193 | 
             
                end
         | 
| 194 | 
            +
              end
         | 
| 194 195 |  | 
| 195 | 
            -
             | 
| 196 | 
            -
             | 
| 197 | 
            -
             | 
| 198 | 
            -
             | 
| 199 | 
            -
             | 
| 200 | 
            -
             | 
| 201 | 
            -
             | 
| 202 | 
            -
             | 
| 203 | 
            -
             | 
| 204 | 
            -
                      end
         | 
| 196 | 
            +
              not_compliant_on :watir, :webdriver do # WTR-336
         | 
| 197 | 
            +
                describe "#save" do
         | 
| 198 | 
            +
                  it "saves the image to a file" do
         | 
| 199 | 
            +
                    file = "#{File.expand_path Dir.pwd}/sample.img.dat"
         | 
| 200 | 
            +
                    begin
         | 
| 201 | 
            +
                      browser.image(:index, 1).save(file)
         | 
| 202 | 
            +
                      File.exist?(file).should be_true
         | 
| 203 | 
            +
                    ensure
         | 
| 204 | 
            +
                      File.delete(file) if File.exist?(file)
         | 
| 205 205 | 
             
                    end
         | 
| 206 206 | 
             
                  end
         | 
| 207 207 | 
             
                end
         | 
| 208 | 
            -
               | 
| 208 | 
            +
              end
         | 
| 209 209 |  | 
| 210 210 | 
             
            end
         | 
| @@ -91,14 +91,12 @@ describe "Option" do | |
| 91 91 | 
             
              describe "#select" do
         | 
| 92 92 | 
             
                bug "WTR-367", :watir do
         | 
| 93 93 | 
             
                  it "selects the chosen option (page context)" do
         | 
| 94 | 
            -
                    browser.select_list(:name, "new_user_country").clear
         | 
| 95 94 | 
             
                    browser.option(:text, "Denmark").select
         | 
| 96 95 | 
             
                    browser.select_list(:name, "new_user_country").selected_options.should == ["Denmark"]
         | 
| 97 96 | 
             
                  end
         | 
| 98 97 | 
             
                end
         | 
| 99 98 |  | 
| 100 99 | 
             
                it "selects the chosen option (select_list context)" do
         | 
| 101 | 
            -
                  browser.select_list(:name, "new_user_country").clear
         | 
| 102 100 | 
             
                  browser.select_list(:name, "new_user_country").option(:text, "Denmark").select
         | 
| 103 101 | 
             
                  browser.select_list(:name, "new_user_country").selected_options.should == ["Denmark"]
         | 
| 104 102 | 
             
                end
         | 
    
        data/watir-webdriver.gemspec
    CHANGED
    
    | @@ -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. | 
| 8 | 
            +
              s.version = "0.0.4"
         | 
| 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- | 
| 12 | 
            +
              s.date = %q{2010-07-22}
         | 
| 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:  | 
| 4 | 
            +
              hash: 23
         | 
| 5 5 | 
             
              prerelease: false
         | 
| 6 6 | 
             
              segments: 
         | 
| 7 7 | 
             
              - 0
         | 
| 8 8 | 
             
              - 0
         | 
| 9 | 
            -
              -  | 
| 10 | 
            -
              version: 0.0. | 
| 9 | 
            +
              - 4
         | 
| 10 | 
            +
              version: 0.0.4
         | 
| 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- | 
| 18 | 
            +
            date: 2010-07-22 00:00:00 +02:00
         | 
| 19 19 | 
             
            default_executable: 
         | 
| 20 20 | 
             
            dependencies: 
         | 
| 21 21 | 
             
            - !ruby/object:Gem::Dependency 
         |