使用Groovy脚本 - RowSelector在SoapUI上读取XLS

时间:2018-03-28 11:58:58

标签: excel groovy soapui

我正在尝试读取XLS文件,以便将来迭代一个断言。 但我甚至无法得到它的价值。

我的代码是:

import jxl.*
import jxl.write.*

def value1
def value2
def value3

//pull value from test suite properties
def RowSelector = testRunner.testCase.testSuite.getPropertyValue( "RowSelector" )

//Read Excel
Workbook wb = Workbook.getWorkbook(new File("C:\\groovy\\excel-file.xls"))

log.info(RowSelector)
value1 = wb.getSheet(0).getCell(0, RowSelector).getContents() //cell A1
                                        testRunner.testCase.testSuite.setPropertyValue( "TestSuitevalue1", value1 )
                                        log.info("Value1 Is: " + value1)

但错误会返回: Groovy error

我发现“RowSelector”变量为null。也许这就是问题所在,但我无法解决这个问题。

Obs。:我从以下代码中获取了此代码示例:https://community.smartbear.com/t5/SoapUI-Pro/Get-xls-data-in-loop-in-groovy-script/td-p/27864

1 个答案:

答案 0 :(得分:0)

getCell(a,b)方法使用整数作为参数,而您从testSuite属性中获取的值是一个字符串。从属性表中获取值时,它是一个字符串。当您想要更新属性表中的字段时,请记住这一点,因为您必须将整数值更改回字符串。

更改行:

def RowSelector = testRunner.testCase.testSuite.getPropertyValue( "RowSelector" )

To This:

def RowSelector = testRunner.testCase.testSuite.getPropertyValue( "RowSelector" ).toInteger()

我将您正在使用的代码分解为各自的部分。我个人认为,在尝试找出错误发生的位置时,打破代码会有所帮助。

// IMPORT THE LIBRARIES WE NEED
import jxl.*
import jxl.write.*
//Get cell row number
def RowSelector = testRunner.testCase.testSuite.getPropertyValue( "RowSelector" ).toInteger()
//Get workbook
Workbook wb= Workbook.getWorkbook(new File("C:\\ExcelFile.xls"))
//Get worksheet
Sheet ws = wb.getSheet(0)
//Get cell
Cell a = ws.getCell(1, RowSelector) // getCell(column,row)
//Close workbook
workbook.close()
//Asign value of cell to variable
A = a.getContents()

log.info A