Class: Webrat::Locators::LinkLocator
- Inherits:
-
Locator
show all
- Defined in:
- lib/webrat/core/locators/link_locator.rb
Overview
Instance Method Summary
collapse
Methods inherited from Locator
#initialize, #locate!
Instance Method Details
#error_message ⇒ Object
63
64
65
|
# File 'lib/webrat/core/locators/link_locator.rb', line 63
def error_message
"Could not find link with text or title or id #{@value.inspect}"
end
|
#link_element ⇒ Object
12
13
14
|
# File 'lib/webrat/core/locators/link_locator.rb', line 12
def link_element
matching_links.min { |a, b| a.inner_text.length <=> b.inner_text.length }
end
|
#link_elements ⇒ Object
43
44
45
|
# File 'lib/webrat/core/locators/link_locator.rb', line 43
def link_elements
@dom.xpath(*Link.xpath_search)
end
|
8
9
10
|
# File 'lib/webrat/core/locators/link_locator.rb', line 8
def locate
Link.load(@session, link_element)
end
|
#matches_id?(link) ⇒ Boolean
35
36
37
38
39
40
41
|
# File 'lib/webrat/core/locators/link_locator.rb', line 35
def matches_id?(link)
if @value.is_a?(Regexp)
link["id"] =~ @value ? true : false
else
link["id"] == @value ? true : false
end
end
|
#matches_text?(link) ⇒ Boolean
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/webrat/core/locators/link_locator.rb', line 23
def matches_text?(link)
if @value.is_a?(Regexp)
matcher = @value
else
matcher = /#{Regexp.escape(@value.to_s)}/i
end
replace_nbsp(link.inner_text) =~ matcher ||
replace_nbsp_ref(link.inner_html) =~ matcher ||
link["title"] =~ matcher
end
|
#matching_links ⇒ Object
16
17
18
19
20
21
|
# File 'lib/webrat/core/locators/link_locator.rb', line 16
def matching_links
@matching_links ||= link_elements.select do |link_element|
matches_text?(link_element) ||
matches_id?(link_element)
end
end
|
#replace_nbsp(str) ⇒ Object
47
48
49
50
51
52
53
54
55
56
57
|
# File 'lib/webrat/core/locators/link_locator.rb', line 47
def replace_nbsp(str)
if str.respond_to?(:valid_encoding?)
if str.valid_encoding?
str.gsub(/\xc2\xa0/u, ' ')
else
str.force_encoding('UTF-8').gsub(/\xc2\xa0/u, ' ')
end
else
str.gsub(/\xc2\xa0/u, ' ')
end
end
|
#replace_nbsp_ref(str) ⇒ Object
59
60
61
|
# File 'lib/webrat/core/locators/link_locator.rb', line 59
def replace_nbsp_ref(str)
str.gsub(' ',' ').gsub(' ', ' ')
end
|