【问题标题】:XPath Query in JMeterJMeter 中的 XPath 查询
【发布时间】:2011-09-23 07:27:49
【问题描述】:

我目前正在与 JMeter 合作,以便在发布之前对我们的其中一个系统进行压力测试。通过这个,我需要模拟用户点击呈现给他们的网页上的链接。我决定使用 XPath 后处理器提取这些链接。

这是我的问题:

我有一个看起来像这样的 XPath 表达式:

//div[@data-attrib="foo"]//a//@href

但是我需要为每个线程(用户)提取一个特定的子节点。我想做这样的事情:

//div[@data-attrib="foo"]//a[position()=n]//@href

(n 为当前索引)

我的问题:

有没有办法使这个查询工作,以便我能够为每个线程提取表达式的新索引?

另外,正如我所提到的,我正在使用 JMeter。 JMeter 为 XPath 查询的每个结果节点创建一个变量。但是,它将它们命名为“VarName_n”,并且不将它们存储为传统数组。如果可能的话,有谁知道我如何动态选择这些变量之一?这也可以解决我的问题。

提前致谢:)

编辑:

显然不支持嵌套变量,因此为了动态引用名为“VarName_1”、VarName_2 等的变量,可以使用:

${__BeanShell(vars.get("VarName_${n}"))}

其中“n”是一个整数。因此,如果 n == 1,这将获得名为“VarName_1”的变量的值。

如果“n”整数在单个线程期间发生变化,则 ForEach 控制器专门为此目的而设计。

【问题讨论】:

    标签: xpath jmeter


    【解决方案1】:

    对于第一个问题——使用

    (//div[@data-attrib="foo"]//a)[position()=$n]/@href 
    

    其中 $n 必须替换为特定整数。

    这里我们还假设//div[@data-attrib="foo"] 选择单个div 元素。

    请注意,XPath 伪运算符 // 通常会导致计算速度非常慢(搜索完整的子树)以及其他令人困惑的问题(这就是上述表达式中需要括号的原因)。

    当文档的结构已知并且可以指定完整的具体路径时,建议避免使用//

    关于第二个问题,不清楚。请举个例子。

    【讨论】:

    • 非常感谢!我最近才开始使用 JMeter,而我的 XPath 经验几乎不存在。但是感谢您为我清理了 XPath 特定部分。至于 JMeter 的具体问题,我同时找到了解决方案 - 我也会将其作为答案发布。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多