Я пытаюсь сделать .formParam-независимый сценарий со случайными значениями.До сих пор я сталкивался с проблемами, пытаясь динамически извлечь атрибуты из запроса.
Итак, во-первых, мне нужно проверить, имеет ли продукт какие-либо атрибуты (необходимо заполнить).Извлеките их с помощью
regex("""\b(product_attribute_\d)(?![\s\S]*?\b\1)""").findAll.optional.saveAs("prod_attributes")
prod_attributes -> List(product_attribute_1, product_attribute_2, product_attribute_3, product_attribute_4, product_attribute_5)
Затем, если атрибуты не пусты (checkIf (! "Prod_attributes" .isEmpty)), я пытаюсь извлечь значения для каждого атрибута в Seq ("prod_attributes"):
(for (i <- 0 to "${prod_attributes}".size - 1) {
css("dd[id='product_attribute_input_" + i + 1 + "'][value]").findAll.saveAs("attribute_input_" + i + 1))
}
Теперь я хочу создать новую Карту и указать как ключ = product_attribute_n и значение Список значений для соответствующего атрибута.Например:
val atrib_map= Map(
product_attribute_1-> List(1, 2),
product_attribute_2-> List(3, 4, 5),
...... etc
)
Или просто извлечь случайное значение для каждого атрибута. А затем использовать этот список для .formParamSeq.
Пожалуйста, поделитесь своими идеями о моем подходе,и помогите мне узнать, есть ли возможность сделать это.(Или я просто копаю в неправильном направлении, и это должно быть выполнено простыми «жестко закодированными» транзакциями)
Эта часть не работает, но я хотел бы использовать что-то подобное.
val goToProduct = http("""Go_to_product""")
.get("/product")
.headers(headers_0)
.check(
regex("""\b(product_attribute_\d)(?![\s\S]*\b\1)""").findAll.optional.saveAs("prod_attributes"),
checkIf(!"prod_attributes".isEmpty){
for (i <- 0 to "${prod_attributes}".size - 1) {
css("dd[id='product_attribute_input_" + i + 1 + "'] [value]").findAll.saveAs("attribute_input_" + i + 1)
}
})
У меня есть эта часть тела (это элемент с большинством атрибутов, которые нужно заполнить).
Основная идея - иметь не жестко закодированные значения, которые можно анализировать для любого продукта (с 2,3,4, любые атрибуты).
<!--attributes-->
<div class="attributes">
<dl>
<dt id="product_attribute_label_1">
<label class="text-prompt">
Processor
</label>
<span class="required">*</span>
</dt>
<dd id="product_attribute_input_1">
<select name="product_attribute_1" id="product_attribute_1">
<option value="1">2.2 GHz Intel Pentium Dual-Core E2200</option>
<option selected="selected" value="2">2.5 GHz Intel Pentium Dual-Core E2200 [+$15.00]</option>
</select>
</dd>
<dt id="product_attribute_label_2">
<label class="text-prompt">
RAM
</label>
<span class="required">*</span>
</dt>
<dd id="product_attribute_input_2">
<select name="product_attribute_2" id="product_attribute_2">
<option value="3">2 GB</option>
<option value="4">4GB [+$20.00]</option>
<option value="5">8GB [+$60.00]</option>
</select>
</dd>
<dt id="product_attribute_label_3">
<label class="text-prompt">
HDD
</label>
<span class="required">*</span>
</dt>
<dd id="product_attribute_input_3">
<ul class="option-list">
<li>
<input id="product_attribute_3_6" type="radio" name="product_attribute_3" value="6">
<label for="product_attribute_3_6">320 GB</label>
</li>
<li>
<input id="product_attribute_3_7" type="radio" name="product_attribute_3" value="7">
<label for="product_attribute_3_7">400 GB [+$100.00]</label>
</li>
</ul>
</dd>
<dt id="product_attribute_label_4">
<label class="text-prompt">
OS
</label>
<span class="required">*</span>
</dt>
<dd id="product_attribute_input_4">
<ul class="option-list">
<li>
<input id="product_attribute_4_8" type="radio" name="product_attribute_4" value="8" checked="checked">
<label for="product_attribute_4_8">Vista Home [+$50.00]</label>
</li>
<li>
<input id="product_attribute_4_9" type="radio" name="product_attribute_4" value="9">
<label for="product_attribute_4_9">Vista Premium [+$60.00]</label>
</li>
</ul>
</dd>
<dt id="product_attribute_label_5">
<label class="text-prompt">
Software
</label>
</dt>
<dd id="product_attribute_input_5">
<ul class="option-list">
<li>
<input id="product_attribute_5_10" type="checkbox" name="product_attribute_5" value="10" checked="checked">
<label for="product_attribute_5_10">Microsoft Office [+$50.00]</label>
</li>
<li>
<input id="product_attribute_5_11" type="checkbox" name="product_attribute_5" value="11">
<label for="product_attribute_5_11">Acrobat Reader [+$10.00]</label>
</li>
<li>
<input id="product_attribute_5_12" type="checkbox" name="product_attribute_5" value="12">
<label for="product_attribute_5_12">Total Commander [+$5.00]</label>
</li>
</ul>
</dd>
</dl>
</div>