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

时间:2011-03-27 16:39:04

标签: java selenium content-type selenium-webdriver

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

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

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

更新

添加赏金:将奖励给最佳解决方案,以便我获取给定网址的内容类型。

3 个答案:

答案 0 :(得分:5)

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

可以执行此操作的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);

项目发布JavaDoc for HttpClientHttpClient interface的文档包含一个很好的例子。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

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