I’m posting to a webpage and in my response I get a big chunk of HTML that will change next request. With groovy I’d like to find this string:
JavaScript
x
var WPQ1FormCtx = {"ListData":{"owshiddenversion":23,
The value “23” will change next time I post to the webpage, and I need that value.
With .contains
I’ll find if string exists.
JavaScript
def htmlParse = Jsoup.parse(htmlResponse)
log.info a.contains('var WPQ1FormCtx = {"ListData":{"owshiddenversion":23,')
But I need to write out the value after owshiddenversion
in the string 'var WPQ1FormCtx = {"ListData":{"owshiddenversion":xxxxx,
that can be anything from 1 to 100 000.
Advertisement
Answer
If I understand the string you are matching correctly, this will help you to do it in pure Groovy. You could wrap it in a method that is called as the test instead of .contains()
JavaScript
def stringPortion = 'var WPQ1FormCtx = {"ListData":{"owshiddenversion":23,'
def match = stringPortion =~ /"owshiddenversion":(d{1,6})/ //capture the match with ()
def matchPortion = match[0][1] //first capture in match
if (matchPortion) {
println matchPortion
def number = matchPortion.toInteger()
if (number > 100000) {
println 'number > 100000'
}
else if (number <= 10000) {
println 'number <= 10000'
}
}