При использовании Capybara нет никакой гарантии, что страница полностью загружена (что бы это ни значило), когда посещение возвращается, и нет никакой гарантии, что какие-либо действия, вызванные нажатием на элемент, завершились (или даже начались) после его возвращения.Это потому, что Capybara ничего не знает о состоянии страницы, кроме того, что «браузер» сообщает, что он виден на странице.Использование только Капибары - лучшее, что вы можете сделать для времени - это время между тем, когда вы говорите браузеру что-то сделать, и временем, которое элемент, ожидаемый на странице, когда «загружен», появляется на странице.В вашем случае это означало бы что-то вроде этого
SIGNIN_BTN = ".//div/button[contains(.,'Sign In')]"
VERIFY_BTN = ".//div/button[contains(.,'NEXTBUTTON')]"
t1 = Time.now
visit "http://google.com"
signin_btn = find(:xpath, SIGNIN_BTN) # wait until signin button is visible on page
t2 = Time.now
pageloadtime1 = t2-t1
puts pageloadtime1
t3 = Time.now
signin_btn.click
verify_btn = find(:xpath, VERIFY_BTN ) # wait until the verify button is visible on page
t4 = Time.now
pageloadtime2 = t4-t3
puts pageloadtime2
t5 = Time.now
verify_btn.click
something = find(:xpath, './/xpath of something visible on page when action has completed')
t6 = Time.now
pageloadtime3 = t6-t5
puts pageloadtime3
Обратите внимание, что все эти измерения будут включать некоторые издержки, поскольку поведение ожидания при попытке найти элементы имеет издержки и задержку 50 мс между каждой попыткой.Также обратите внимание, что xpath SIGNIN_BTN и VERIFY_BTN теперь начинаются с .//
- Вы должны привыкнуть к запуску всех xpath, используемых с Capybara, с .//
вместо //
, если только вам действительно не нужно //
и понимать разницу (это нарушает область видимости настраницы) - https://github.com/teamcapybara/capybara#beware-the-xpath--trap