1

I am extracting several variables from a login response, using "Regular Expression Extractor" post processors. Most of them work when I reuse the variable, but one doesn't. The regex extractor has the following settings:

Apply to: Main sample only
Field to check: Body
Name of variable: id_token
Regular Expression: <input type="hidden" name="id_token" value="([^"]+)"
Template: 
Match No.:
Default Value:
Use empty default value: (unchecked)

Then in a later POST HTTP request I use the parameter:

Name,   Value,  URL Encode?,    Content-Type,   Include Equals
id_token,   ${id_token_g1}, true,   text/plain, true

When running the test in the "View Results Tree" listener the same POST request's POST data contains

&id_token=%24%7Bid_token_g1%7D

Instead of the value of id_token_g1.
Other variables in the same POST data are being completed correctly. The Debug PostProcessor from the previous request contains

id_token_g1=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjVEbHphYTlvNEdveWFtWXdLNl9MUS16akFZTSIsImtpZCI6IjVEbHphYTlvNEdveWFtWXdLNl9MUS16akFZTSJ9.eyJpc3MiOiJodHRwczovL2xvY2FsaG9zdDo0NDM4Ny9pZHMiLCJhdWQiOiJkOGVjZjYzMi1mNzE0LTQ2MzEtOGViOS1lYmUzMDI5OGNjMGYiLCJleHAiOjE1Mjk1MDE3MTgsIm5iZiI6MTUyOTUwMTQxOCwibm9uY2UiOiI2MzY2NTA5ODIwNTI4Mzc0MTguWW1aa016ZzFNVEV0TXpjeVlTMDBObUppTFdFM016UXRaVFV3WkRrd01ESXdNekEwTWpnM09URTFZVEl0TURJek1DMDBNalF6TFdGbU1HTXRObVExWmpjNU5XWmxNVEUxIiwiaWF0IjoxNTI5NTAxNDE4LCJhdF9oYXNoIjoiN1Y0cGdWWmVpc2pJV3NXM1ZMTTNadyIsImNfaGFzaCI6Ik8wd3ZKanBSS2NIUnJDOExnUkhfeWciLCJzaWQiOiJiZjc4YWJjMDIxMzhkMDBkMmVlYjk4Y2E3ODg2OWQxZiIsInN1YiI6ImU2NWE0M2MwLTllY2EtNDRjYi05YzYzLWU2NjhhMzNhNWQyYiIsImF1dGhfdGltZSI6MTUyOTUwMTQxNiwiaWRwIjoiaWRzcnYiLCJhbXIiOlsicGFzc3dvcmQiXX0.p8Wn1_SPf2wA1YFby4-ftXGfCtLQaHf6_XXaQJQFF_9SdOHDG2ICVKXs3Jx4UwwyQPDDnKl7rTQINRfb1sfNLnhGsuxr5BoDQaddyG24afT4-quwhl3XDb1jPIMEk-3l-6Rnhdr-UIzHXpMZaaYXE9rdCygI7wqT8REbL8nctQv9GTgh3O751NMjY4FYmj4QDBYrsp9sHJEx_sysMCHPscOm6vnIakKfuVGrVE2qBOQu2PfP3i29npDgNmJ2bmBniljnTMFI57w1vSq8mK2LIYMqoJyy6iudcxAlfRTGzEkezetmH3eIChQIipLUHHb-NmyImtOt-tdUUZXh_Rwq6r7YcwW6zfEPmVFunuHfxc5sB9fZEEzsZLoczB7UeWfBekYGMIK1AKp1BTkQA-kwcqbWIn66Hdjrmepnq3A6nD6pEB-I2tHMgbHIogwHqsGM61OBAGC2y7As3BdF-zepm1m9jISmRX7hiU8u6I1TOhwWIz8VKjlkdmqTQf1lY6I7yAq2Rwtu0zrQ--6el_lB7emX1YvD8whSFpQjI4YNpWJWRZ9ALXC7CudIgN5D4tgzSmEpQrcK-NasXWYf6RMfeDhYTYAbAChgwJ3KwWk6u_5OsX2LgQGbAg23BH9O_9rGg84DTgHM6IMlQG_loX2PnL8B5yqxydbJsz6CBdiLqKg

I have the same issue with session_state_g1

session_state_g1=XZkcgcg9i_FqlFIS-scHuHqMdm5jepyCSSFkF_S4Dx8.99d68c0a8e802c8767d22fb019bd34b5

But not with

access_token_g1=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjVEbHphYTlvNEdveWFtWXdLNl9MUS16akFZTSIsImtpZCI6IjVEbHphYTlvNEdveWFtWXdLNl9MUS16akFZTSJ9.eyJpc3MiOiJodHRwczovL2xvY2FsaG9zdDo0NDM4Ny9pZHMiLCJhdWQiOiJodHRwczovL2xvY2FsaG9zdDo0NDM4Ny9pZHMvcmVzb3VyY2VzIiwiZXhwIjoxNTI5NTA2MzAzLCJuYmYiOjE1Mjk1MDI3MDMsImNsaWVudF9pZCI6ImQ4ZWNmNjMyLWY3MTQtNDYzMS04ZWI5LWViZTMwMjk4Y2MwZiIsInNjb3BlIjpbIm9wZW5pZCIsInByb2ZpbGUiLCJkeW5hbWljY2xhaW1zIiwiZmlsZXN0cmVhbWluZ2FwaSIsInVzZXJtYW5hZ2VtZW50YXBpIl0sInN1YiI6ImU2NWE0M2MwLTllY2EtNDRjYi05YzYzLWU2NjhhMzNhNWQyYiIsImF1dGhfdGltZSI6MTUyOTUwMjcwMSwiaWRwIjoiaWRzcnYiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhbmdlbGFjIiwibG9jYWxlIjoiZW4tR0IiLCJuYW1lIjoiQW5nZWxhIENhdGFsZG8iLCJhdWRpdF9yZWFkX2JpdG1hc2siOiIwIiwiYXVkaXRfd3JpdGVfYml0bWFzayI6IjAiLCJhbXIiOlsicGFzc3dvcmQiXX0.Z2RTMN6NGwC1e8bJANmzvA9rUyo03vCpA3TTNylbdR8EpOvaktgHXHjWCFzxlaXeiL-24DlmVoq3qPHRx0u03nr8ZRD2fb9R_OeHxZ-gVr-2D1Ash1f_429J_4U7zjQfAQSOKHHamzTocSl0orLuvQdc9-oAydPCzpp82UbEDwsnQl_E52dK_LEB4eSiV3sB8rSpmZkmnhCmuSh9iUuMEOmA_zIs2cH_exFWjv5WXbZ8gKR-ATrPNuzoDpghMNZs-Of-dZwsaHfSJpV8C12DQ6wZq-w7m6v2szUpgJh1kHafKzM8Gm8-nMAAPV83hbdALFVvsF9tfcLjin3OEdytsfsfRLDEHLh4E-vo-LyAeHV-TKGuvX60-6tdQsSQXY-egVx1W7NiObmLbFzdRGAiV--tk8QHJ8Vf-nVAT00YXeQxEdMl1lqJFNuNOFxoNXL1ud_frUv1c2xwcnCH0hBpt2avWqN72Bj-15j6uube7IPIVp20NpT0M7FujohB-wQLfVJ8d7Ac_AVNScqasdijpTP5DzmsFybvXAu8n0MEcYHYF0-C8_d0EWW7GxpSEeeVFqKNk7JFgXEo1ta_5Yu7XDpwG7evzMFMw49cImZgcQlxrq3oDnl-qo6r9UXOfvS5QoDILU6dqYUpRSS1-Mz4_JbOmEs78v5ixcrm94PfNis

I have the same problem if I update the name of the HTTP Request sampler (it shows as ${id_token_g1} in the "View Results Tree" listener)

Any ideas what I'm doing wrong?

Steve
  • 4,415
  • 1
  • 19
  • 30

2 Answers2

0
  1. Make sure your setup is following JMeter Scoping Rules, i.e. you should have setup like:

    • Open Login Page
      • Regular Expression Extractor
    • Perform Login
  2. Make sure you have this hidden input with name id_token in the response data. JMeter can be configured to store response data in .jtl results file, you need to add next 2 lines in user.properties file:

    jmeter.save.saveservice.output_format=xml
    jmeter.save.saveservice.response_data=true
    

    Don't forget to restore the default configuration once you figure out the cause of the problem. See Results file configuration for more details.

  3. Regular expressions is not the best choice for parsing HTML responses as they can be very fragile in case of markup change (changed order of HTML attributes or the input definition becomes multi-line). So consider switching to CSS/JQuery Extractor instead, the relevant configuration would be something like:

    • Reference Name: anything meaningful, you can keep id_token
    • CSS/JQuery Expression: input[id=name]
    • Attribute: value

    In 2nd POST request you can refer the extracted value as ${id_token}

Dmitri T
  • 159,985
  • 5
  • 83
  • 133
  • Brilliant, thanks. Using Css/JQuery extractor worked. Debug postprocessor said both the CSS and Regex variables had the same value, and the Regex extractor is at the same level in the tree as the regex extractor, but the variable extracted with the CSS extractor works and the regex one doesn't. – Steve Jun 20 '18 at 14:51
0

1.Follow Jmeter Scoping Rules.

2.To your regular expression you can give template as $1$ and use ${id_token} instead of ${id_token_g1}.

For more information on regular expression extractors follow this link.

You can use this website to test your regular expressions.

Let me know if it helps..

Rohit
  • 601
  • 4
  • 12