Нет, это не так. Я не понял твою точку зрения, извини.
В любом случае, если я захочу инвертировать выделение элемента с множественным выбором, я сделаю это следующим образом (в отношении этого выпадающего списка из 3 элементов на странице, которую я предоставил ранее):
storeSelectedIndexes | xpath=(//select[@name='jezyk'])[4] | selected
removeAllSelections | xpath=(//select[@name='jezyk'])[4]
store | ${selected} | selected2
store | javascript{storedVars['selected2'].split(',').length} | selectedNo
store | 999 | selectedIndexNo0
store | 999 | selectedIndexNo1
store | 999 | selectedIndexNo2
store | -1 | loop1
while | ${loop1} < (${selectedNo} - 1)
store | javascript{storedVars.loop1++}
store | javascript{storedVars['selected2'].split(',')[storedVars['loop1']]} | selectedIndexNo${loop1}
endWhile |
store | -1 | loop2
while | ${loop2} < 2
store | javascript{storedVars.loop2++}
gotoIf | ${loop2} == ${selectedIndexNo0} || ${loop2} == ${selectedIndexNo1} || ${loop2} == ${selectedIndexNo2} | dontSelect
addSelection | xpath=(//select[@name='jezyk'])[4] | index=${loop2}
label | dontSelect
endWhile |
Полагаю, это не самый простой способ, но работает.
Подходит для трех элементов с несколькими вариантами выбора.
Первый цикл (while - endWhile) извлекает выбранные индексы, а второй цикл выбирает все элементы, кроме выбранных ранее.
Хорошо, я сделал несколько изменений, и эту версию скрипта можно использовать с элементами любого размера (если первая метка имеет индекс = 0). Все, что вам нужно сделать, это ввести id или xpath для проверенной мультиформы в первую команду и указать количество всех меток в элементе либо через storeXpathCount, либо просто указав их количество. И добавьте больше / меньше условий к команде "gotoIf" в зависимости от размера мультиформ.
2-я версия скрипта:
//store | put here id or xpath of your dropdown | elementID
store | xpath=(//select[@name='jezyk'])[4] | elementID
storeSelectedIndexes | ${elementID} | selected
removeAllSelections | ${elementID}
store | ${selected} | selected2
store | javascript{storedVars['selected2'].split(',').length} | selectedNo
//use custom xpath or explicitly type number of labels using simple "store" command instead of "storeXpathCount"
storeXpathCount | //div[@id='content']/div/div[2]/div[31]/div/select/option | elementSize
store | -1 | loop0
while | ${loop0} < ${elementSize}
store | javascript{storedVars.loop0++}
store | 999 | selectedIndexNo${loop0}
endWhile |
store | -1 | loop1
while | ${loop1} < (${selectedNo} - 1)
store | javascript{storedVars.loop1++}
store | javascript{storedVars['selected2'].split(',')[storedVars['loop1']]} | selectedIndexNo${loop1}
endWhile |
store | -1 | loop2
while | ${loop2} < (${elementSize} - 1)
store | javascript{storedVars.loop2++}
//depending on size of your multiform element you have to add more conditions to below "gotoIf" command. At the moment it's good for three elements (labels)
gotoIf | ${loop2} == ${selectedIndexNo0} || ${loop2} == ${selectedIndexNo1} || ${loop2} == ${selectedIndexNo2} | dontSelect
addSelection | ${elementID} | index=${loop2}
label | dontSelect
endWhile |