【问题标题】:How to cyclically pass variables in selector in WebDriverSampler in JMeter?如何在 JMeter 的 WebDriverSampler 的选择器中循环传递变量?
【发布时间】:2021-03-16 08:40:12
【问题描述】:

我有一组时间段需要循环点击 JMeter 脚本。

对于时隙 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 - 也是一个变量,应该用时隙执行多少次迭代。

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

UPD。 我尝试了以下方法:

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 is: ' + 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')")); 时隙.click();

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

【问题讨论】:

    标签: variables xpath jmeter webdriver cycle


    【解决方案1】:

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

    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

    【讨论】:

    • 谢谢。我尝试了以下操作: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 顺序发送请求)。但如果我有 null xpath,则不确定语法。我错过了什么?...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 2016-07-03
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多