Class: Gridium::ElementVerification

Inherits:
Object
  • Object
show all
Defined in:
lib/element_verification.rb

Instance Method Summary collapse

Constructor Details

#initialize(element, timeout, fail_test: false, element_should_exist: true) ⇒ ElementVerification

Returns a new instance of ElementVerification.

Parameters:

  • element (Element)
  • timeout (Integer)
  • not_verification (Boolean)
    • Whether or not we are ‘NOT’ verifying something about the element



9
10
11
12
13
14
# File 'lib/element_verification.rb', line 9

def initialize(element, timeout, fail_test: false, element_should_exist: true)
  @element = element # Selement
  @timeout = timeout
  @should_exist = element_should_exist
  @fail_test = fail_test
end

Instance Method Details

#attribute(attribute, value) ⇒ Object

TODO:

Raises:

  • (NotImplementedError)


134
135
136
# File 'lib/element_verification.rb', line 134

def attribute(attribute, value)
  raise NotImplementedError
end

#css(attribute, value) ⇒ Object

TODO:

Raises:

  • (NotImplementedError)


139
140
141
# File 'lib/element_verification.rb', line 139

def css(attribute, value)
  raise NotImplementedError
end

#notObject



16
17
18
# File 'lib/element_verification.rb', line 16

def not
  ElementVerification.new(@element, @timeout, @fail_test, element_should_exist: false)
end

#presentObject



91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# File 'lib/element_verification.rb', line 91

def present
  fail_message = nil
  pass_message = nil
  should_be_present = @should_exist

  if should_be_present
    fail_message = "Element should be present."
    pass_message = "is present."
  else
    fail_message = "Element should NOT be present."
    pass_message = "is not present."
  end

  wait = Selenium::WebDriver::Wait.new :timeout => @timeout, :interval => 1
  begin
    wait.until do
      element_is_present = @element.present?
      if element_is_present && should_be_present
        ElementExtensions.highlight(@element) if Gridium.config.highlight_verifications
        log_success(pass_message)
        return @element
      elsif !element_is_present && !should_be_present
        Log.debug("Confirming element is NOT present...")
        log_success(pass_message)
      else
        log_issue(fail_message)
      end
    end
    @element
  end
end

#selectedObject

TODO:

Raises:

  • (NotImplementedError)


129
130
131
# File 'lib/element_verification.rb', line 129

def selected
  raise NotImplementedError
end

#text(text) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/element_verification.rb', line 20

def text(text)
  fail_message = nil
  pass_message = nil
  should_have_text = @should_exist
  element_text = @element.text
  if @element.present?
    $verification_passes += 1
  else
    Log.error("Cannot determine element text.  Element is not present.")
  end

  if should_have_text
    fail_message = "Element should contain text (#{text}), but does not."
    pass_message = "contains text (#{text})."
  else
    fail_message = "Element should not contain text (#{text}), but does."
    pass_message = "does not contain text (#{text}).  Actual text is: (#{element_text})."
  end

  wait = Selenium::WebDriver::Wait.new :timeout => @timeout, :interval => 1
  begin
    wait.until do
      element_contains_text = element_text.eql?(text)
      if should_have_text && element_contains_text
        Log.debug("Confirming text (#{text}) is within element...")
        ElementExtensions.highlight(@element) if Gridium.config.highlight_verifications
        log_success(pass_message)
      elsif !should_have_text && !element_contains_text
        Log.debug("Confirming text (#{text}) is NOT within element...")
        ElementExtensions.highlight(@element) if Gridium.config.highlight_verifications
        log_success(pass_message)
      else
        log_issue("#{fail_message}  Element's text is: (#{element_text}).")
      end
    end
    @element
  end
end

#value(value) ⇒ Object

TODO:

Raises:

  • (NotImplementedError)


124
125
126
# File 'lib/element_verification.rb', line 124

def value(value)
  raise NotImplementedError
end

#visibleObject



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/element_verification.rb', line 59

def visible
  fail_message = nil
  pass_message = nil
  should_be_visible = @should_exist

  if should_be_visible
    fail_message = "Element should be visible."
    pass_message = "Element is visible."
  else
    fail_message = "Element should not be visible."
    pass_message = "Element is not visible."
  end

  wait = Selenium::WebDriver::Wait.new :timeout => @timeout, :interval => 1
  begin
    wait.until do
      element_is_displayed = @element.displayed?
      if element_is_displayed && should_be_visible
        ElementExtensions.highlight(@element) if Gridium.config.highlight_verifications
        log_success(pass_message)
        return @element
      elsif !element_is_displayed && !should_be_visible
        Log.debug("Confirming element is NOT visible...")
        log_success(pass_message)
      else
        log_issue(fail_message)
      end
    end
    @element
  end
end