确定与Selenium一起使用的CSS框架

时间:2013-10-14 07:10:24

标签: java css selenium frameworks

我正在编写一个程序,它可以浏览各种网页并使用Selenium进行一些测试。 现在我想找出在这些网站上使用哪些CSS框架来获取一些统计信息。 现在我只需检查FireFox Webdriver,如果在页面中链接的.css文件具有特定框架的名称:  Iterator<WebElement> divWebElementIteratorCSS = webDriver.findElements(By.xpath("//link[@rel='stylesheet']")).iterator();

然后我检查找到的.css文件的名称是否包含我要检查的CSS框架之一的名称:

if ( src.contains( frameWorkName ) && cssFrameWorks.get( frameWorkName ) == false ) {
    result.addAttribute("Framework", "STRING", frameWorkName);
    result.setPercent( 100 );
    result.setSuccessful( true );
    cssFrameWorks.put( frameWorkName, true );
}

Hashmap frameWorkName包含我感兴趣的框架的所有名称。

现在我的问题:如果站点的管理员重命名了框架的.css文件,我的测试不起作用!有没有一种安全的方法可以检查这个,即使.css有不同的名字也能正常工作?

2 个答案:

答案 0 :(得分:3)

我认为@ AaronDigulla的回答很清楚。

我能想到的另一种选择是,当你遍历那些,在那个css文件上做一个GET,然后在开始时快速浏览文档。例如,CSS文件可能包含...

/*  CSS Framework vX.X
 *  Author: Some Author
 *  License:
 *    Some ridiculously long license
 */

这可以缓解您的文件名更改问题。

答案 1 :(得分:2)

我知道没有可靠的方法来确定在网站中使用哪些CSS(或JavaScript)框架。

如果你很幸运,那么管理员将使用全局网址(如CDN links provided by jQuery)。

当人们开始重命名文件时,您可以尝试下载CSS文件并对其进行指纹处理(创建校验和)。

当人们更改这些文件时,那将失败。这可以自动发生; wro4j是一个框架,可以自动将所有JavaScript和CSS资源编译成一个大文件。

我也有点担心你为什么需要这些信息。而不是试图弄清楚正在使用哪个框架(以及哪个版本)寻找可能影响您的测试的实际CSS样式。