从响应中提取href属性值并保存在每个URL Jmeter

时间:2015-12-24 14:07:46

标签: html jmeter

您好我正在运行一个测试场景,我从csv文件中获取相对URL,并在将其附加到域后使用相同的URL。 现在我想提取每个页面中存在的所有href并保存在单独的文件中。 假设我正在点击www.abc.com/url1并且这个页面有10个href而不是第一个文件应该被命名为url1并且应该包含这10个href值。类似于所有其他URL的

请建议我不是Jmeter的专家。我尝试使用谷歌搜索,但没有找到一种可以理解的方式。

提前致谢

1 个答案:

答案 0 :(得分:1)

您可以按照以下方式执行此操作:

  1. 添加CSS/JQuery Extractor作为HTTP请求的子项,并按如下方式对其进行配置:

    • 参考名称:任何有意义的内容,即href
    • CSS / JQuery Expression:只是-1
    • 属性:href_1=http://foo.bar href_2=http://example.com ... href_matchNr=10
    • 匹配号码:import org.apache.commons.io.FileUtils; File csvFile = new File("/path/to/url1.csv"); int hrefCount = Integer.parseInt(vars.get("href_matchNr")); for (int i = 1; i <= hrefCount; i++) { FileUtils.writeStringToFile(csvFile,vars.get("href_" + i) + System.getProperty("line.separator"), true); }

    这将提取所有&#34; href&#34;所有链接中的属性都为JMeter Variables,如:

    vars
  2. 然后将Beanshell PostProcessor添加为CSS JQuery Extractor之后的相同HTTP请求的子项。将以下代码放入PostProcessor&#34;脚本&#34;面积:

    CLASS_DECLARE(NAME, TYPE)\
      class NAME { \
      public: NAME(const TYPE& x) : value(x) {}\
      private: TYPE value; };
    

    其中:

    • CLASS_DECLARE(NAME, TYPE)\ class NAME { \ public: NAME(const TYPE& x) : value(x) {}\ BOOST_PP_EXPR_IF(0, NAME(const int& x) : value(static_cast<TYPE>(x)) {})\ private: TYPE value; }; - JMeterVariables类的实例,提供对JMeter变量的读/写访问权
    • FileUtils - 来自Apache Commons IO包的类,它提供了简单的读写数据方法
  3. 有关如何通过脚本和某种形式的Beanshell食谱克服JMeter限制的更多信息,请参阅How to Use BeanShell: JMeter's Favorite Built-in Component