如何在导航到其他站点时获取URL

时间:2016-05-11 20:57:41

标签: ruby-on-rails ruby capybara capybara-webkit

我正在开发一个测试,我需要在导航到零售商网站时验证URL

例如,当我点击产品时,它会导航到零售商的页面。我需要在导航到零售商的页面时捕获URL,但它不应该是前一页的页面。甚至不是零售商的页面。

Ruby或Capybara中是否有任何方法可以获取该URL?我试图实现此方法,但它没有提供正确的URL。

url = URI.parse(current_url)
def validate_url(url)
  browser= Capybara.current_session.driver.browser
  puts "current URL = #{browser.current_url}" if @verbose
  assert_includes browser.current_url, url
end
#Actual Output url =http://www.shopstyleqa.com/browse/womens-clothes
#Expected Output url=http://www.shopstyleqa.com/action/loadRetailerProductPage

1 个答案:

答案 0 :(得分:0)

由于Capybara旨在模拟用户对浏览器的使用,因此它不会报告重定向,因此如果将浏览器重定向到另一个浏览器,则无法获取中间URL。如果它位于链接href属性中,或者在代表项目的任何元素上的数据属性等,您可以验证将要请求的原始URL。

另一方面,将current_url与eq或includes进行比较是一个片状测试的配方。相反,你应该使用assert_current_path断言使用Capybaras等待/重试行为 - 在你的情况下它会像

assert_current_path("http://www.expected.com/expected_url", url: true)