如何在JDBC Object中使用变量? JMeter的

时间:2016-12-21 15:49:36

标签: java mysql jdbc jmeter

我有一个JMeter作业正在网页上执行一些UI测试,然后它应该将一个对象的文本值存储在一个名为“impid”的变量中

var vars = org.apache.jmeter.threads.JMeterContextService.getContext().getVariables()        
var importID = WDS.browser.findElement(org.openqa.selenium.By.xpath('html/body/table[2]/tbody/tr[3]/td[6]/table[1]/tbody/tr[5]/td[2]/strong')).getText() 
vars.put('impid','importID')

我相信该部分正在运行,然后我希望将该变量的值传递给mysql JDBC Request,就像这样 -

select id, fileName, timeEntered, timeStarted, timeCompleted, comments from netdespatch.fileImportStore where id = ${impid};

但varialbe只是被用作“名称”,它没有被转换为变量值。

我确定有人知道我做错了什么..

3 个答案:

答案 0 :(得分:0)

String s ="select id, fileName, timeEntered, timeStarted, timeCompleted, comments from netdespatch.fileImportStore where id = ?";
PreparedStatement preparedStatement = dbConnection.prepareStatement(s);
preparedStatement.setInt(1, impid);

使用占位符'?'然后用sentInt(或其他类型的适当方法)绑定

答案 1 :(得分:0)

  

我相信这部分正在运作

你怎么知道的?鉴于您的XPath语法我不相信它匹配任何东西。

您的选择查询看起来不错,因此我建议您使用Debug SamplerView Results Tree监听器组合仔细检查${impid}变量。

您也可以尝试直接从WebDriver Sampler将变量值打印到 jmeter.log 文件中,如:

WDS.log.info('importID value == ' + importID)

参考文献:

答案 2 :(得分:0)

我解决了这个问题,我在Webdriver和JDBC之间传递的变量需要是一个jmeter UDV。所以

我有一个名为impID的UDV

从webdriver获取我的值并将其放入impID变量

var vars = org.apache.jmeter.threads.JMeterContextService.getContext().getVariables()
var importID = WDS.browser.findElement(org.openqa.selenium.By.xpath('html/body/table[2]/tbody/tr[3]/td[6]/table[1]/tbody/tr[5]/td[2]/strong')).getText() 
vars.put('impID',importID)

这会将importID的值放入UDV impID

然后在JDBC请求中,使用"准备好的选择语句"

select id, fileName, timeEntered, timeStarted, timeCompleted from nd.fileImportStore where id = ?

并在参数值中输入= $ {impID}

这有效:)