我创建了一个非常简单的webtest,它只有一个简单的URL请求:https://www.domain.com/
。
当我运行测试但是我失败了并且这条消息:
请求失败:URI无效:无法确定URI的格式。
但响应选项卡有适当的响应HTTP/1.1 200 OK
与大量的HTML。这是Visual Studio中的一个错误或者某种东西,有没有办法确保它不会将正确的请求视为失败?
附:我也注意到请求需要10到15秒,即使RequestTime(视觉工作室显示)真的小于1。
大多数网页的HTML都需要下载其他文件的集合,例如图像,JSON,CSS,JavaScript等。这些是相关请求。 Visual Studio检查HTML以查找依赖请求集。它们都应该是有效的URL。提取这些依赖请求的Visual Studio代码比许多浏览器更不宽容。 Visual Studio要求它们是有效的URL。许多真正的浏览器都在努力应对糟糕的HTML,以便能够显示出合理的东西。
异常的原因可能是响应中格式错误的HTML。某些浏览器具有开发人员工具,可以描述下载的html中发现的错误。检查这些开发人员设施对页面上的错误的评价;可能值得尝试几个浏览器来获得页面的不同评估。
一个例子:格式错误的base tag可能导致您报告的异常。
查看Web测试执行日志以获取成功请求时,您将看到列出的相关请求。似乎Visual Studio“信任”这些请求形成有效的URL,即它们格式正确。您的测试的网址格式错误。如果您提供了格式正确的URL但没有资源,那么您将看到依赖请求并看到它出现404错误。这是一个边缘情况,你可能会争辩说Visual Studio应该以不同的方式报告它。
通过“web测试执行日志”,我指的是显示Web测试结果的方式。这是带有列标题的表格形式:请求+状态+总时间+请求时间+请求字节+响应字节。下面是标签显示所选项目的详细信息,标签标记为Web浏览器+请求+响应+上下文+详细信息。如果单击“请求”列左侧的小三角形,您将看到重定向和相关请求。 (请注意,在负载测试中运行的Web测试日志会省略相关的请求详细信息。)
针对该特定呼叫将“Parse Dependent Requests”设置为False有助于。
我设法在VS调试器中捕获无效的URI值:
系统会要求您提供一个您没有的源文件,但没关系。 Locals调试器窗口显示错误的URI。根据调试符号的可用性,您可能需要多次重新运行测试(直到加载所有符号)。
更新:
AdrianHHH是对的 - 问题在于“基础”标签。它看起来像这样:
<base href='/foo/'>
在HTML4中它是非法的,但在HTML5中它是一个有效的结构。但VS2013 webtest引擎在这里失败了。