Selenium 2:检测链接目的地的内容类型

我正在使用Selenium 2 Java API与网页进行交互。 我的问题是:我如何检测链接目的地的内容类型?

基本上,这是背景:在单击链接之前,我想确保响应是HTML文件。 如果没有,我需要以另一种方式处理它。 所以,假设有一个PDF文件的下载链接。 应用程序应直接读取该URL的内容,而不是在浏览器中打开它。

目标是让应用程序自动知道当前位置是HTML,PDF,XML还是其他任何使用适当的解析器来从文档中提取有用信息的应用程序。

更新

添加赏金:将奖励到最佳解决方案,这使我可以获得给定URL的内容类型。

正如Jochen所说,在不下载内容的情况下获取Content-type的方法是HTTP HEAD ,而selenium webdrivers似乎不提供类似的function。 您必须找到另一个库来帮助您获取url的内容类型。

可以执行此操作的Java库是Apache HttpComponents ,尤其是HttpClient 。

(以下代码未经测试)

 HttpClient httpclient = new DefaultHttpClient(); HttpHead httphead = new HttpHead("http://foo/bar"); HttpResponse response = httpclient.execute(httphead); BasicHeader contenttypeheader = response.getFirstHeader("Content-Type"); System.out.println(contenttypeheader); 

该项目发布了HttpClient的JavaDoc , HttpClient接口的文档包含一个很好的例子。

您可以找出将处理数据的内容类型。不确定为什么需要首先解决这个问题。 如果是这样,请使用HEAD方法并查看Content-Type标头。

您可以从DOM中检索所有URL,然后解析每个URL的最后几个字符(使用java正则表达式)来确定链接类型。

您可以解析最后一个点的字符。 例如,在URL http://yoursite.com/whatever/test.pdf ,提取pdf ,并相应地强制执行测试逻辑。

我是否过度简化了您的问题?