我们仍然有Silverlight(悲伤的故事),我需要编写一个冒烟测试,检查IE在部署后访问站点时是否重新下载XAP文件。重新加载XAP意味着存在某种配置/部署问题,这很糟糕。
代码是C#或Powershell,当然必须在没有人为干预的情况下运行。它运行在专用的测试跑步机上,例如我可以安装Fiddler。
但是,使用Fiddler或任何全局代理并不理想,因为使用相同的测试运行器来测试我们的云中部署的不同站点。但是有可能。另外一个复杂因素是,Fiddler必须安装其SSL证书才能解密HTTPS流量。简而言之,我不确定这是否正确。另外,我不清楚如何自动执行这些步骤:
所以,我正在寻找关于如何做到这一点的建议,一般不一定使用Fiddler或全局HTTP代理。有任何想法吗?
编辑1
该测试已经在手动烟雾测试列表中。我们正在自动化这些测试,现在轮到这个了。
看起来你正试图测试IE的行为,这是不切实际的。
例如,IE可以被配置为在退出时始终删除其缓存,因此重新下载XAP是后续请求中的预期行为。
我实际上会尝试测试托管HTML页面和/或HTTP响应。
例如,您可以使用WebRequest
以编程方式请求网页,然后检查响应是否在其标头中有内容过期或缓存控制,这会告诉浏览器是否应该缓存页面。
您可能还想检查网页上的<param />
元素的<object />
子元素,其中source
值具有URL。
如果URL与之前的URL相同,浏览器将缓存XAP文件。因此,您可以检查该值是否随后续请求而变化。
来自https://docs.microsoft.com/en-us/previous-versions/office/developer/sharepoint-2010/gg701782(v%3Doffice.14): ...浏览器将缓存此.xap文件,就像基于所设置的缓存策略的任何其他文件一样。
这是一些C#代码示例:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri("http://example.com/SilverlightHostingPage.html"));
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string cacheControlHeader = response.GetResponseHeader("Cache-Control");
// TODO: check header value
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(response.GetResponseStream());
string xapUrl = xmlDoc.DocumentElement.SelectSingleNode("//object/param[@name='source']").Attributes("value").Value;
// TODO: check xap url