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