【问题标题】:Get http status codes after link was clicked点击链接后获取http状态码
【发布时间】:2017-11-11 19:25:04
【问题描述】:

当直接打开 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

【问题讨论】:

标签: cucumber uri watir net-http page-object-gem


【解决方案1】:

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

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'

在这种情况下,我什至不需要点击链接,它的代码就会得到。

【讨论】:

    【解决方案2】:

    如果您单击锚标记并且它具有 href 属性,您可以尝试使用以下代码。

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

    【讨论】:

    • 在这种情况下,我将只获取 ulr 的 href 并且需要使用 visit_page 方法。我的意思是点击链接时获取http代码。您的变体之前已经应用过:)。
    猜你喜欢
    • 1970-01-01
    • 2011-10-18
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    相关资源
    最近更新 更多