我有一个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只是被用作“名称”,它没有被转换为变量值。
我确定有人知道我做错了什么..
答案 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 Sampler和View 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}
这有效:)