Cucumber 单击链接后获取http状态代码

Cucumber 单击链接后获取http状态代码,cucumber,uri,watir,net-http,page-object-gem,Cucumber,Uri,Watir,Net Http,Page Object Gem,我有下一个代码,当url被直接打开时,它会得到http代码: require 'net/http' require 'uri' def visit_page(url, response_code: false) @browser.goto(url) if response_code page_status_code(url) end end def page_status_code(url) uri = URI.parse(url)

我有下一个代码,当url被直接打开时,它会得到http代码:

require 'net/http'
require 'uri'

  def visit_page(url, response_code: false)
    @browser.goto(url)
    if response_code
      page_status_code(url)
    end
  end

  def page_status_code(url)
    uri = URI.parse(url)
    connection = Net::HTTP.new(uri.host, uri.port)

    # If SSL.
    # connection.use_ssl = true
    # connection.verify_mode = OpenSSL::SSL::VERIFY_NONE

    request = Net::HTTP::Get.new(uri.request_uri)
    response = connection.request(request)
    response.code
  end
在下一个场景中:

response_code = page.visit_page('https://www.google.com', response_code: true)
puts response_code
如果我点击链接,我如何应用它来获取http代码

page.link_element(text: 'lorem ipsum').click

如果您正在单击锚定标记,并且它具有href属性,请使用以下代码进行尝试

    Hrefvalue = page.link_element(text: 'lorem ipsum').get_attribute ('href')
    response_code = page.visit_page( Hrefvalue, response_code: true) 
puts response_code

我找到了另一个解决方案:

mylink = @browser.link(:text, 'Lorem Ipsum')
url = URI.parse mylink.href
status_code = Net::HTTP.start(url.host, url.port) { |http| http.head(url.request_uri).code }
puts url
status_code.should == '200'

在这种情况下,我甚至不需要点击链接,它的代码就会被获取。

在这种情况下,我只需要获取ulr的href,并且需要使用
访问页面
方法。我的意思是当点击链接时获取http代码。您的变体之前已应用:)。更好的方法是使用代理:这与我创建测试的方法相同。直接转到url并获取http代码。您的方法要求您加载所有内容两次