lib/page-object/elements/element.rb in page-object-1.2.0 vs lib/page-object/elements/element.rb in page-object-1.2.1
- old
+ new
@@ -68,10 +68,27 @@
gsub(/([a-z\d])([A-Z])/,'\1_\2').
tr("-", "_").
downcase}s"
end
+ #
+ # Keeps checking until the element is visible
+ #
+ # @param [Integer] (defaults to: 5) seconds to wait before timing out
+ #
+ def check_visible(timeout=::PageObject.default_element_wait)
+ timed_loop(timeout) do |element|
+ element.visible?
+ end
+ end
+
+ def check_exists(timeout=::PageObject.default_element_wait)
+ timed_loop(timeout) do |element|
+ element.exists?
+ end
+ end
+
# @private
def self.watir_identifier_for identifier
if should_build_watir_xpath(identifier)
how = :xpath
what = build_xpath_for(identifier)
@@ -243,9 +260,18 @@
nil
end
private
+ def timed_loop(timeout)
+ end_time = ::Time.now + timeout
+ until ::Time.now > end_time
+ result = yield(self)
+ return result if result
+ sleep 0.5
+ end
+ false
+ end
def constantize_classname name
name.split("::").inject(Object) { |k,n| k.const_get(n) }
end