首页 文章

从Loadrunner中的多个下拉列表中捕获响应值

提问于
浏览
0

我必须分别使用loadrunner捕获 <select name="fromPort"><select name="toPort"> 中的选项值以进行关联 .

我把正则表达式写成了

<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>

当我尝试使用记事本时,有一个复选框可供选择何时捕获多行响应 . 当我检查它时,相同的正则表达式正在工作 . enter code here

2 回答

  • 0

    You can try this

    那么我所做的就是 .

    • 使用此选项从选择匹配的选择标记中提取所有选项

    (?:<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);
    
  • 0

    我的答案不那么优雅,考虑到你在房子的一侧/另一侧有多个类似的标签 . 我建议备份,使用LB条件捕获“fromPort”class = \“form-inline \”\ n“或\”toPort“class = \”form-inline \“\ n”到一个结束标记“\ n”

    您将最终得到两个字符串变量,例如“Correlated_from”和“Correlated_to”,它们包含选项值 . 接下来是转换为数组结构 .

    有可能有十几种方法可以将字符串分开,但我建议使用一个打破换行符的函数,跳转子字符串中的第一个“\ t \ t”字符,保存它与下一个字符串之间的值“<”字符 . 如前所述,可能有十几种方法可以使用定义的模式分解此字符串以获取您感兴趣的子字符串 .

    通过遵循标准的LoadRunner伪数组结构,这开启了标准LoadRunner函数的使用,用于从伪数组--Lr_paramarr_ *函数集中分配变量 .

相关问题