class Watir::Element
Constants
- DOM_WAIT_JS
Public Instance Methods
dom_changed?(delay: 1.1)
click to toggle source
Returns true if DOM is changed within the element.
@example Wait until DOM is changed inside element with default delay
browser.div(id: 'test').wait_until(&:dom_changed?).click
@example Wait until DOM is changed inside element with default delay
browser.div(id: 'test').wait_until do |element| element.dom_changed?(delay: 5) end
@param delay [Integer, Float] how long to wait for DOM modifications to start
# File lib/watir/dom/elements/element.rb, line 19 def dom_changed?(delay: 1.1) element_call do begin driver.manage.timeouts.script_timeout = delay + 1 driver.execute_async_script(DOM_WAIT_JS, wd, delay) rescue Selenium::WebDriver::Error::JavascriptError => error # sometimes we start script execution before new page is loaded and # in rare cases ChromeDriver throws this error, we just swallow it and retry retry if error.message.include?('document unloaded while waiting for result') raise ensure # TODO: make sure we rollback to user-defined timeout # blocked by https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/6608 driver.manage.timeouts.script_timeout = 1 end end end