2014-12-15 4 views
1

Моя цель - использовать Regex для извлечения из документа HTML значения тега с определенным именем. Соответствующая часть кода:Regex для извлечения значения определенного значения <input> tag

<!-- hidden datas --> 
     <p class="hidden"> 
      <input type="hidden" name="token" value="6ac2c9b7d56b483ad6b9db051a285637" /> 
      <input type="hidden" name="id_product" value="541" id="product_page_product_id" /> 
      <input type="hidden" name="add" value="1" /> 
      <input type="hidden" name="id_product_attribute" id="idCombination" value="" /> 
     </p> 

Мне нужно извлечь символьного символы 6ac2c9b7d56b483ad6b9db051a285637 К сожалению, нет другого пути, чем через Regex.

Тот же токен также присутствует в другой части документа. Может быть, легче извлечь из этого блока кода?

 <script type="text/javascript" src="/webshop/js/tools.js"></script> 
    <script type="text/javascript"> 
     var baseDir = '/webshop/'; 
     var static_token = '6ac2c9b7d56b483ad6b9db051a285637'; 
     var token = '1799f145490151b92137df1493a520cc'; 
     var priceDisplayPrecision = 2; 
    </script> 
+0

вы можете использовать 'jsoup' (http://jsoup.org/cookbook/extracting-data/attributes-text-html) –

ответ

0

Использование регулярных выражений экстрактор компонент JMeter для извлечения строки, Expression будет,

static_token \= '(\w+)'; 

Template : $1$ 
Match no : 1 

Это должно извлечь значение в указанной переменной.

+0

Этот также работает, спасибо! – Robin

+0

Хороший ответ - это Дмитрий Дмитриевич. Regexp не подходит для HTML –

0

Следующая регулярное выражение будет захватить маркер в вашем втором примере:

/var static_token = '([0-9a-f]{32})';/

+0

Хорошим ответом является Дмитрий Дмитриевич. Regexp не подходит для HTML –

0

JMeter документация имеет пример, который тесно соответствует тому, что вы хотите достичь: http://jmeter.apache.org/usermanual/regular_expressions.html

В вашем случае:

<input type="hidden" name="token" value="([^"]+)" /> 
+0

Сначала мне не удалось выяснить эту часть документации, но теперь я ее получу. Благодаря! – Robin

+0

Добро пожаловать @Robin. Спасибо за исправление @ketan! –

+0

Хороший ответ - тот, на который Дмитрий T. Regexp не подходит для HTML в JMeter –

1

Я бы рекомендовал, чтобы получить его, используя XPath Extractor следующим образом:

  1. Добавить XPath Extractor в качестве дочернего элемента запроса, который возвращает этот ответ
  2. Добавить что-то значимое, как Reference Name - это будет имя переменной JMeter держит результат, т.е. token
  3. Если ответ не соответствует XHTML проверки Use Tidy окно
  4. Используйте следующее выражение XPath в `XPath Query» вход :

    //input[@name='token']/@value 
    
  5. См. Извлеченное значение как ${token}, если требуется.

Для получения дополнительной информации о XPath языка в следующих ресурсах:

Использование Regex также может работать, однако в случае сложного многострочного HTML, лучше использовать XPath или CSS/JQuery экстракторы. Для пояснения см. famous answer on StackOverflow.

Смежные вопросы