让Ruby等到网页发生变化

时间:2016-04-21 16:11:22

标签: ruby cucumber wait

我在Ruby / Cucumber中进行了测试,该测试运行在Web服务的几个连续页面上。我需要让它等到一个特定的页面完成它的事情并关闭,以便检查后面页面的内容。

除了测试查看错误的页面时,其他所有工作都正常。

我看到有等待&直到方法,但我不知道如何应用它们来检查当前的URL - 如何让我的程序等到要检查的页面打开?

非常感谢任何帮助。

感谢您的评论。测试运行selenium webdriver和Firefox浏览器。希望这更清楚。

我希望它等待之前的代码是:

def confirm_payment
    within_frame(find('iframe')) do
    find_by_id('CompanyLogo').click
    end
end

这是该块的最后一步:

if @pymnt_rqd == "y"
   confirm_customer_details
   enter_payment_card_details
   confirm_payment
#wait here until the page has turned to the response screen
  end

我需要它等到页面转动之后再进行此操作:

#Check the text on the response screen against the csv file.
  check_response_screen

1 个答案:

答案 0 :(得分:0)

要等待新页面,您可以等待新的正文:

require 'selenium-webdriver'

driver = Selenium::WebDriver.for :chrome
wait = Selenium::WebDriver::Wait.new(timeout: 10)

driver.navigate.to "http://stackoverflow.com/"

# get the body element
body = driver.find_element(:css, "body")

# do something to change the page
...

# wait for a new page (new body)
wait.until {driver.find_element(:css, "body") != body}