如何在 JMeter 的 WebDriverSampler 中的选择器中循环传递变量?

问题描述

我有一组需要在 JMeter 脚本中循环单击的时间段。

对于第一个 timeslot,timeslot id=1,WebDriver Sampler 中的代码是:

//选择时间段:

wait.until(pkg.ExpectedConditions.presenceOfElementLocated(pkg.By.xpath("//div[@id='timeslot1']")));

var 时间段 = WDS.browser.findElement(pkg.By.xpath("//div[@id='timeslot1']"));

Timeslot.click();

如何从一组变量而不是特定选择器(“//div[@id='timeslot1']”)传递值?

一组变量看起来像:

//div[@id='timeslot1']

//div[@id='timeslot2']

//div[@id='timeslot3']

//div[@id='timeslot4']

//div[@id='timeslot5']

...

//div[@id='timeslotN']

N - 也是一个变量,应该用时隙执行多少迭代。

通过传递变量而不是选择器来循环执行许多请求的最佳方法是什么?

更新。 我尝试了以下方法:

1)

wait.until(pkg.ExpectedConditions.presenceOfElementLocated(pkg.By.xpath(WDS.vars.get('//div[@id='timeslot'+N]'))));

var Underwriter_Timeslot = WDS.browser.findElement(pkg.By.xpath(WDS.vars.get('//div[@id='timeslot'+N]')));

(N - 来自 Loop 控制器的外部变量,以 N 从 1 到 10 顺序发送请求。

但是,在那种情况下,我有一个错误,即 xpath 为空。

2)

var XPath_Timeslot_Number = WDS.vars.get('//div[@id='timeslot'' + WDS.vars.get('N')]); WDS.vars.put('XPath_Timeslot_Number',XPath_Timeslot_Number); WDS.log.info('XPath_Timeslot_Number 是:' + XPath_Timeslot_Number);

wait.until(pkg.ExpectedConditions.presenceOfElementLocated(pkg.By.xpath("WDS.vars.get('XPath_Timeslot_Number')"))); var Timeslot = WDS.browser.findElement(pkg.By.xpath("WDS.vars.get('XPath_Timeslot_Number')")); Timeslot.click();

任何见解,在 xpath 中按顺序生成时隙编号的正确选项是什么?

解决方法

JMeter Variable 获取 WebDriver Sampler 值的简写是:

var myVar = WDS.vars.get('myVar')

其中 WDS.vars 代表 JMeterVariables 类实例,请参阅所有可能函数的文档

因此您可以执行以下操作:

var i = 0
var n = parseInt(WDS.vars.get('N'))
for (i = 0; i < n; i++) {
  WDS.browser.findElement(pkg.By.xpath(WDS.vars.get('some_prefix' + n));
}

更多信息:The WebDriver Sampler: Your Top 10 Questions Answered

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...