How to use reload method of Capybara.Node Package

Best Capybara code snippet using Capybara.Node.reload


Source:base.rb Github


Full Screen

...30 @session = session31 @base = base32 end33 # overridden in subclasses, e.g. Capybara::Node::Element34 def reload35 self36 end37 ##38 #39 # This method is Capybara's primary defence against asynchronicity40 # problems. It works by attempting to run a given block of code until it41 # succeeds. The exact behaviour of this method depends on a number of42 # factors. Basically there are certain exceptions which, when raised43 # from the block, instead of bubbling up, are caught, and the block is44 # re-run.45 #46 # Certain drivers, such as RackTest, have no support for asynchronous47 # processes, these drivers run the block, and any error raised bubbles up48 # immediately. This allows faster turn around in the case where an49 # expectation fails.50 #51 # Only exceptions that are {Capybara::ElementNotFound} or any subclass52 # thereof cause the block to be rerun. Drivers may specify additional53 # exceptions which also cause reruns. This usually occurs when a node is54 # manipulated which no longer exists on the page. For example, the55 # Selenium driver specifies56 # `Selenium::WebDriver::Error::ObsoleteElementError`.57 #58 # As long as any of these exceptions are thrown, the block is re-run,59 # until a certain amount of time passes. The amount of time defaults to60 # {Capybara.default_max_wait_time} and can be overridden through the `seconds`61 # argument. This time is compared with the system time to see how much62 # time has passed. On rubies/platforms which don't support access to a monotonic process clock63 # if the return value of `` is stubbed out, Capybara will raise `Capybara::FrozenInTime`.64 #65 # @param [Integer] seconds (current sessions default_max_wait_time) Maximum number of seconds to retry this block66 # @param [Array<Exception>] errors (driver.invalid_element_errors +67 # [Capybara::ElementNotFound]) exception types that cause the block to be rerun68 # @return [Object] The result of the given block69 # @raise [Capybara::FrozenInTime] If the return value of `` appears stuck70 #71 def synchronize(seconds = nil, errors: nil)72 return yield if session.synchronized73 seconds = session_options.default_max_wait_time if [nil, true].include? seconds74 session.synchronized = true75 timer = Capybara::Helpers.timer(expire_in: seconds)76 begin77 yield78 rescue StandardError => e79 session.raise_server_error!80 raise e unless catch_error?(e, errors)81 if driver.wait?82 raise e if timer.expired?83 sleep(0.01)84 reload if session_options.automatic_reload85 else86 old_base = @base87 reload if session_options.automatic_reload88 raise e if old_base == @base89 end90 retry91 ensure92 session.synchronized = false93 end94 end95 # @api private96 def find_css(css, **options)97 if base.method(:find_css).arity == 198 base.find_css(css)99 else100 base.find_css(css, **options)101 end...

Full Screen

Full Screen


Using AI Code Generation


Full Screen

1, node)2, page.driver.browser)3, page.driver.browser)4link = find(:xpath, '//a[@href=""]')

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:


You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?