如何从 url 中检索 http 响应状态代码?
How can i retrieve the http response status code from an url?
我正在对包含需要随后测试的 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”。
我明白为什么会这样,它正在获取正在搜索的页面的 header。但是我怎样才能得到状态码呢?硒有可能吗?我的方法有问题吗,我需要使用不同的方法而不是 Headers?
不幸的是,我无法提供我正在测试的 url 或带有 url 的平台,因为它们是机密的。希望我的问题很清楚,你们可以给我一些指导。
我想你应该使用 response.Status.ToString();
而不是 response.Headers.ToString();
但是状态不仅包含 200
或 401
这样的数字,还包含文本。
所以如果你打算使用 response.Status.ToString();
你应该 Assert.True(ContentUrlHttpRequest().contains("200"))
或者您可以使用 response.StatusCode.ToString();
这将为您提供状态编号本身 String 而无需其他文本。
您不在 return 回复 status code 中。您在 headers 中 return。
您应该将 return 语句替换为:
return ((int)response.StatusCode).ToString();
我正在对包含需要随后测试的 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”。
我明白为什么会这样,它正在获取正在搜索的页面的 header。但是我怎样才能得到状态码呢?硒有可能吗?我的方法有问题吗,我需要使用不同的方法而不是 Headers?
不幸的是,我无法提供我正在测试的 url 或带有 url 的平台,因为它们是机密的。希望我的问题很清楚,你们可以给我一些指导。
我想你应该使用 response.Status.ToString();
而不是 response.Headers.ToString();
但是状态不仅包含 200
或 401
这样的数字,还包含文本。
所以如果你打算使用 response.Status.ToString();
你应该 Assert.True(ContentUrlHttpRequest().contains("200"))
或者您可以使用 response.StatusCode.ToString();
这将为您提供状态编号本身 String 而无需其他文本。
您不在 return 回复 status code 中。您在 headers 中 return。
您应该将 return 语句替换为:
return ((int)response.StatusCode).ToString();