【问题标题】:Determine which CSS Framework is used with Selenium确定与 Selenium 一起使用的 CSS 框架
【发布时间】:2013-10-21 17:10:13
【问题描述】:

我正在编写一个程序,它可以爬取各种网页并使用 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 有不同的名称也有效?

【问题讨论】:

  • 什么是“CSS 框架”?你有例子吗?
  • 类似 Bootstrap、Foundation 或 YAML 的东西!
  • 为什么需要知道这些信息?无论他们使用 YAML 还是其他东西,它对你有什么用处?
  • 我的老板想要一个统计数据,我们的合作伙伴使用哪些框架来支持响应式设计(有很多方法可以手动完成或直接询问)。

标签: java css selenium frameworks


【解决方案1】:

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

我可以想到的另一种方法是,当您遍历这些文件时,对该 css 文件执行 GET,然后在开始时快速浏览文档。例如,一个 CSS 文件可能包含...

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

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

【讨论】:

    【解决方案2】:

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

    如果幸运的话,管理员将使用全局 URL(例如 CDN links provided by jQuery)。

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

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

    我也有点担心您为什么需要这些信息。与其试图找出正在使用的框架(以及哪个版本),不如寻找正在应用的可能会影响您的测试的实际 CSS 样式。

    【讨论】:

      猜你喜欢
      • 2019-10-26
      • 2012-08-31
      • 1970-01-01
      • 2018-04-19
      • 2013-04-29
      • 2013-08-10
      • 2016-06-17
      • 1970-01-01
      • 2012-10-04
      相关资源
      最近更新 更多