【问题标题】:How can i retrieve the http response status code from an url?如何从 url 中检索 http 响应状态代码?
【发布时间】:2021-05-03 09:21:46
【问题描述】:

我正在对包含需要测试的 URL 的页面进行自动化测试。

我创建了一个方法,我认为它可以为我提供 http 状态代码:

public string ContentUrlHttpRequest()
        {
            HttpWebRequest protocolWebRequest = (HttpWebRequest)WebRequest.Create(ContentUrl());
            protocolWebRequest.Method = "GET";
            HttpWebResponse response = (HttpWebResponse)protocolWebRequest.GetResponse();
            return response.Headers.ToString();
        }

ContentUrl() 是我创建的另一种方法,用于在页面上查找带有要测试的 url 的元素并获取它的值。

我也试过return response.StatusCode.ToString();,但我收到的回复是“OK”。

我知道来自该 url 的响应需要 = 200。我有这个断言,它将来自 ContentUrlHttpRequest() 的响应与预期结果 (200) 进行比较:

Assert.AreEqual("200", ContentUrlHttpRequest(), "The Url is not live. Http response = " + ContentUrlHttpRequest());

我从ContentUrlHttpRequest() 得到的响应不是状态代码,而是:“日期:星期一,2021 年 5 月 3 日 09:07:13 GMT”。

我明白为什么会这样,它正在获取正在搜索的页面的标题。但是我怎么能得到状态码呢?硒可以吗?我的方法有问题吗?而不是 Headers 我需要使用不同的东西?

很遗憾,我无法提供我正在测试的网址或带有该网址的平台,因为它们是机密的。希望我的问题很清楚,你们可以给我一些指导。

【问题讨论】:

标签: c# selenium httprequest httpresponse http-response-codes


【解决方案1】:

您没有返回响应 status code。您正在返回标题。

你应该用这个替换return语句:

return ((int)response.StatusCode).ToString();

【讨论】:

  • 我从 StatusCode 得到的响应是“OK”。我忘了在我的帖子中提到我也尝试过。我现在将编辑帖子。
  • 完美,这对我有用。我对 c# 很陌生,你能告诉我 (int) 在命令之前做了什么吗?或者你能指导我在哪里可以阅读它和其他变体?
  • (int) 将状态码的枚举值转换为 int 类型。换句话说,它将其转换为 int。然后我将整个结果转换为字符串,因为这是 ContentUrlHttpRequest 方法的返回类型。欲了解更多信息:docs.microsoft.com/en-us/dotnet/csharp/programming-guide/types/…
【解决方案2】:

我猜你应该使用response.Status.ToString(); 而不是response.Headers.ToString();
但状态不仅包含200401 之类的数字,还包含文本。
所以如果你要使用response.Status.ToString();,你应该Assert.True(ContentUrlHttpRequest().contains("200"))
或者您可以使用response.StatusCode.ToString();,这将为您提供状态编号本身的字符串,无需额外的文本。

【讨论】:

  • 之前也尝试过,抱歉我没有在我的帖子中引用它。使用状态我收到“OK”而不是状态码。不幸的是,有人要求我专门获取状态代码,以便稍后在测试失败时对其进行调试
  • 你确定状态/状态码是OK 只是没有数字吗?也许不是 200,而是 2XX 或 3XX 之类的其他东西?
  • 所以我没有注意到你之前说过.Status。我只是假设它是 .StatusCode 。 StatusCode 的响应是“OK”。
  • 非常确定状态码是“OK”,没有别的
猜你喜欢
  • 1970-01-01
  • 2017-11-01
  • 1970-01-01
  • 2012-09-15
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2016-02-08
相关资源
最近更新 更多