Starting on field_with_xpath implementation
This commit is contained in:
parent
fe8a8cf435
commit
5502948417
@ -41,6 +41,10 @@ module Webrat
|
||||
@element["id"]
|
||||
end
|
||||
|
||||
def path
|
||||
@element.path
|
||||
end
|
||||
|
||||
def matches_id?(id)
|
||||
if id.is_a?(Regexp)
|
||||
@element["id"] =~ id
|
||||
|
@ -18,6 +18,10 @@ module Webrat
|
||||
nil
|
||||
end
|
||||
|
||||
def field_by_element(element)
|
||||
fields.detect { |possible_field| possible_field.path == element.path }
|
||||
end
|
||||
|
||||
def find_select_option(option_text)
|
||||
select_fields = fields_by_type([SelectField])
|
||||
|
||||
|
@ -3,6 +3,14 @@ require "webrat/core_extensions/detect_mapped"
|
||||
module Webrat
|
||||
module Locators
|
||||
|
||||
def field_by_xpath(xpath)
|
||||
element = dom.at(xpath)
|
||||
|
||||
forms.detect_mapped do |form|
|
||||
form.field_by_element(element)
|
||||
end
|
||||
end
|
||||
|
||||
def field(*args)
|
||||
# This is the default locator strategy
|
||||
find_field_with_id(*args) ||
|
||||
|
@ -46,7 +46,8 @@ module Webrat
|
||||
:request_page, :current_dom,
|
||||
:selects_date, :selects_time, :selects_datetime,
|
||||
:select_date, :select_time, :select_datetime,
|
||||
:wait_for_page_to_load
|
||||
:wait_for_page_to_load,
|
||||
:field_by_xpath
|
||||
|
||||
|
||||
end
|
||||
|
@ -216,6 +216,7 @@ module Webrat
|
||||
def_delegators :current_scope, :should_see
|
||||
def_delegators :current_scope, :should_not_see
|
||||
def_delegators :current_scope, :field_labeled
|
||||
def_delegators :current_scope, :field_by_xpath
|
||||
|
||||
private
|
||||
# accessor for testing
|
||||
|
17
spec/api/locators/field_by_xpath_spec.rb
Normal file
17
spec/api/locators/field_by_xpath_spec.rb
Normal file
@ -0,0 +1,17 @@
|
||||
require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
|
||||
|
||||
|
||||
describe "field_by_xpath" do
|
||||
it "should work" do
|
||||
with_html <<-HTML
|
||||
<html>
|
||||
<form>
|
||||
<label for="element_42">The Label</label>
|
||||
<input type="text" id="element_42">
|
||||
</form>
|
||||
</html>
|
||||
HTML
|
||||
|
||||
field_by_xpath(".//input").id.should == "element_42"
|
||||
end
|
||||
end
|
@ -1,4 +1,4 @@
|
||||
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
||||
require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
|
||||
|
||||
|
||||
describe "field_labeled" do
|
Loading…
Reference in New Issue
Block a user