Захват значений ответов из нескольких раскрывающихся списков в Loadrunner - PullRequest
0 голосов
/ 10 декабря 2018

Мне нужно захватить значения параметров в <select name="fromPort"> и <select name="toPort"> отдельно для корреляции с использованием loadrunner.

Я записал регулярное выражение как

<select name="fromPort" class="form-inline">(.+?)</select>

для захвата с первого, но это показывает, что совпадения нет.

<form action="reserve.php" method="post">
        <select name="fromPort" class="form-inline">
            <option value="Paris">Paris</option>
            <option value="Philadelphia">Philadelphia</option>
            <option value="Boston">Boston</option>
            <option value="Portland">Portland</option>
            <option value="San Diego">San Diego</option>
            <option value="Mexico City">Mexico City</option>
            <option value="São Paolo">São Paolo</option>
        </select>
        <p>
        <h2>Choose your destination city:</h2>
        <select name="toPort" class="form-inline">
            <option value="Buenos Aires">Buenos Aires</option>
            <option value="Rome">Rome</option>
            <option value="London">London</option>
            <option value="Berlin">Berlin</option>
            <option value="New York">New York</option>
            <option value="Dublin">Dublin</option>
            <option value="Cairo">Cairo</option>
        </select>
        <p></p>
        <div class="container">
            <input type="submit" class="btn btn-primary" value="Find Flights"/>
        </div>
    </form>

Когда я пытаюсь использовать notepad ++, появляется флажок для выбора, когда нужно захватить несколько строк ответа.Когда я проверяю это, то же самое регулярное выражение работает. enter code here

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Мой ответ менее изящен, учитывая, что у вас есть несколько похожих тегов на стороне дома.Я собираюсь предложить резервное копирование, захватывая с помощью LB условия либо \ "fromPort" class = \ "form-inline \" \ n ", либо \" toPort "class = \" form-inline \ "\ n" вконечный тег «\ n»

В результате вы получите две строковые переменные, такие как «Correlated_from» и «Correlated_to», которые содержат значения параметров.Следующим является преобразование в структуру массива.

Вероятно, существует дюжина способов разбить строку на части, но я бы порекомендовал функцию, которая разбивает символ новой строки и перебрасывает первый "\ t \ t"Символ в подстроке, сохраняющий значение между этим и следующим символом «<».Как отмечалось ранее, существует, вероятно, дюжина способов разбить эту строку с определенным шаблоном, чтобы добраться до интересующей вас подстроки. </p>

Придерживаясь стандартной структуры псевдомассива LoadRunner, это открывает использованиестандартные функции LoadRunner для присвоения переменной из псевдомассива - набор функций lr_paramarr_ *.

0 голосов
/ 10 декабря 2018

Вы можете попробовать это

Хорошо, что я сделал, это.

  • Извлечены все опции из выбранного подходящего тега выбора, используя это

    (?:<select name="(fromPort|toPort)" class="form-inline">\s+)([\w\W]+?)(?=\s+<\/select>)

  • Чем разбить каждый параметр как отдельный элемент в массив.

  • Чем извлечено значение из каждого параметра с использованием этого регулярного выражения.

    (?<=\s*?<option value=")(.*?)(?=">.*?<\/option>)

let str =`<form action="reserve.php" method="post">
        <select name="fromPort" class="form-inline">
            <option value="Paris">Paris</option>
            <option value="Philadelphia">Philadelphia</option>
            <option value="Boston">Boston</option>
            <option value="Portland">Portland</option>
            <option value="San Diego">San Diego</option>
            <option value="Mexico City">Mexico City</option>
            <option value="São Paolo">São Paolo</option>
        </select>
        <p>
        <h2>Choose your destination city:</h2>
        <select name="toPort" class="form-inline">
            <option value="Buenos Aires">Buenos Aires</option>
            <option value="Rome">Rome</option>
            <option value="London">London</option>
            <option value="Berlin">Berlin</option>
            <option value="New York">New York</option>
            <option value="Dublin">Dublin</option>
            <option value="Cairo">Cairo</option>
        </select>
        <p></p>
        <div class="container">
            <input type="submit" class="btn btn-primary" value="Find Flights"/>
        </div>
    </form>`
    
let selectAllOption = str.match(/(?<=<select name="(fromPort|toPort)" class="form-inline">\s+)[\w\W]+?(?=\s+<\/select>)/g);

let splitedOptions = selectAllOption.map(e=>e.split('\n'))
let finalValues = splitedOptions.map(e=>{
  return e.map(ele=>{
    return ele.match(/(?<=\s*?<option value=")(.*?)(?=">.*?<\/option>)/g)
  })
})
console.log(finalValues);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...