Класс ParseResponse извлекает строку из своего входного аргумента. Класс
ExtractToken извлекает конкретную лексему (строку) из своего входного аргумента. Оба
класса могут пригодиться при обработке определенных типов динамической взаимосвязи
данных.
Класс ParseResponse извлекает строку из своего входного аргумента, используя
регулярное выражение для проверки соответствия шаблону.
package customcode;
import com.ibm.rational.test.lt.kernel.services.ITestExecutionServices;
import java.util.regex.*;
/**
* Класс ParseResponse демонстрирует применение пользовательского кода для
* извлечения строки из своего входного аргумента, используя регулярное
* выражение для проверки соответствия шаблону.
*
* В этом примере предполагается, что входная строка args[0] - это полный
ответ от предыдущего запроса. Этот ответ содержит дневные заголовки
в следующем формате:
*
* <a class=f href=r/d2>In the News</a><small class=m> <span id=nw>
* </span></small></h2>
* <div class=ct>
* • <a href=s/213231>Cooler weather moving into eastern
U.S.</a> * <br>• <a href=s/262502>Digital camera shipments
up</a><br> *
* При вышеуказанном ответе извлеченная строка будет выглядеть так:
* Cooler weather moving into eastern U.S.
*/
/**
* @author Примеры пользовательского кода IBM
*/
public class ParseResponse implements
com.ibm.rational.test.lt.kernel.custom.ICustomCode2 {
/**
* Экземпляры этого объекта будут созданы с помощью конструктора no-arg.
*/
public ParseResponse() {}
public String exec(ITestExecutionServices tes, String[] args) {
String HeadlineStr = "Заголовок отсутствует";
String RegExpStr = ".*In the News[^;]*;[^;]*;[^;]*;<a
href=([^>]*)>([^<]*)<"; Pattern pattern =
Pattern.compile(RegExpStr, Pattern.DOTALL); Matcher matcher =
pattern.matcher(args[0]);
if (matcher.lookingAt())
HeadlineStr = matcher.group(2);
else
tes.getTestLogManager().reportMessage("Ввод не соответствует
шаблону.");
return HeadlineStr;
}
Класс ExtractToken извлекает конкретную строку из своего входного
аргумента.
package customcode;
import com.ibm.rational.test.lt.kernel.services.ITestExecutionServices;
/**
* Класс ExtractToken демонстрирует применение пользовательского кода для извлечения
* конкретной лексемы (строки) из своего входного аргумента. Это может пригодиться
* при обработке определенных типов динамической взаимосвязи данных.
*
* В этом примере предполагается, что входная строка args[0] разделена запятыми,
* а требуемая лексема - предпоследняя. Например, если входная строка
* args[0] - это:
* javascript:parent.selectItem('1010','[Negative]1010','1010','','IBM',
* '30181','Rational','1','null','1','1','6fd8e261','RPT')
* то класс возвратит строку 6fd8e261.
*/
/**
* @author Примеры пользовательского кода IBM
*/
public class ExtractToken implements
com.ibm.rational.test.lt.kernel.custom.ICustomCode2 {
public ExtractToken() {
}
public String exec(ITestExecutionServices tes, String[] args) {
String ArgStr;
String NextToLastStr;
String[] Tokens = args[0].split(",");
if (Tokens.length > 2) {
ArgStr = Tokens[Tokens.length - 2]; // Извлечь предпоследнюю лексему
// Удалить обрамляющие кавычки
NextToLastStr = ArgStr.substring(1, ArgStr.length() - 1);
} else {
tes.getTestLogManager().reportMessage("Извлечь значение не удалось");
NextToLastStr = null;
}
return NextToLastStr;
}
}