Выбор случайного Option в теге Select [Дон шампиньон]

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113
  • Спасибо
Реакции: spbalexpiter

spbalexpiter

Client
Регистрация
24.11.2013
Сообщения
399
Благодарностей
92
Баллы
28
А если атрибут name а не id?
 

xopek2007

Client
Регистрация
10.05.2013
Сообщения
102
Благодарностей
11
Баллы
18
Здравствуйте, пытаюсь выбрать select по значению в переменной.
C#:
HtmlElement he = instance.ActiveTab.MainDocument.FindElementById("select_ID");
HtmlElement opt = he.FindChildByAttribute("option","value","^AC$","regexp",0);
opt.SetAttribute("selected", "selected");
У меня код выглядит следующим образом
HTML:
<select name="Size" id="msku-sel-2" class="msku-sel" selectedindex="0">
<option value="-1" selected="selected">- Select -</option>
<option id="msku-opt-1" value="1">S</option>
<option id="msku-opt-2" value="2">M</option>
<option id="msku-opt-3" value="3">L</option>
<option id="msku-opt-4" value="4">XL</option>
</select>
Я делаю так
C#:
HtmlElement he = instance.ActiveTab.MainDocument.FindElementById("msku-sel-2");
HtmlElement opt = he.FindChildByAttribute("option","value","{-Variable.Select2_value_after_deduction-}","regexp",0);
opt.SetAttribute("selected", "selected");
Когда в переменной 1 то ничего не происходит, когда 2,3,... и так далее то все работает.
Как исправить?
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113
Код:
HtmlElement opt = he.FindChildByAttribute("option","value","project.Variables["Select2_value_after_deduction"].Value,"regexp",0);
 
  • Спасибо
Реакции: Sviridon

xopek2007

Client
Регистрация
10.05.2013
Сообщения
102
Благодарностей
11
Баллы
18
Так вообще не робит:(
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113

Darkoman

Client
Регистрация
17.03.2018
Сообщения
54
Благодарностей
7
Баллы
8
ребята а есть рабочий пример для тестирования.
Там где нужно выбрать значение из выпадающего списка.
 

intagens

Client
Регистрация
28.09.2015
Сообщения
209
Благодарностей
31
Баллы
28
PS: если что - этот сниппет не работает с select, внутри которого есть optgroup - для него у меня отдельный сниппет, который надо бы тоже выложить)
добрый день ... а можете, все таки, выложить)) ... как раз с таким столкнулся
 

Vinovnik

Client
Регистрация
10.08.2016
Сообщения
354
Благодарностей
106
Баллы
43
А если атрибут name а не id? Что тогда выбирать?
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113
  • Спасибо
Реакции: luk911

proffyes

Client
Регистрация
16.07.2015
Сообщения
409
Благодарностей
19
Баллы
18
А есть решение для optgroup?
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113
А есть решение для optgroup?
Вроде бы оно и для optgroup должно работать (то есть выбирать правильно option случайный). А если тебе что-то другое надо, то напиши подробнее
 

proffyes

Client
Регистрация
16.07.2015
Сообщения
409
Благодарностей
19
Баллы
18
Вроде бы оно и для optgroup должно работать (то есть выбирать правильно option случайный). А если тебе что-то другое надо, то напиши подробнее
Мне нужно определенное поле выбрать
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 867
Баллы
113

SuperMinion

Client
Регистрация
04.03.2021
Сообщения
21
Благодарностей
4
Баллы
3
Всем привет! Прошу помощи, так как сам уже головешку сломал)) Осваиваю данный прием, но что-то не получается. Делаю под мобильную версию. Проблема с выбором секретного вопроса при регистрации ЯндексПочты. Я воспользовался предложенными здесь вариантами, вник в код, но чего то не понимаю. Options как бы меняются внутри выпадающего списка, но визуально это не видно. То есть как бы вариант никакой не выбрался. Я сделал Touch для открытия списка и именно после этого заметил что значения все таки меняются (каждый раз выпадает список с новым выделенным значением). Вот список открылся, синеньким выделен вариант, а что дальше делать? Опять Touch по элементу, но не могу понять как. Или это лишнее и вариант сам должен выбраться без всяких Тачей?)) Спасибо!)

Там вот такой хтмл:


HTML:
<select class="Select2-Control" name="hint_question_id" tabindex="-1">
   <option value="12">Фамилия вашего любимого музыканта</option>
   <option value="13">Название улицы, на которой вы выросли</option>
   <option value="14">Ваш любимый киногерой</option>
   <option value="4">Дата рождения бабушки</option>
   <option value="3">Почтовый индекс родителей</option>
   <option value="15">Марка вашей первой машины</option>
   <option value="16">Фамилия вашего любимого учителя</option>
   <option value="17">Ваша любимая книга в детстве</option>
   <option value="18">Ваша любимая компьютерная игра</option>
   <option value="99">Задайте собственный вопрос</option>
</select>
Использовал вот такой C# :

C#:
Random rnd = new Random();


// находим select по id
HtmlElement he = instance.ActiveTab.FindElementByTag("select", 0);
// исключаем пустые дочерние option (обычно первый элемент с пустыи value или -1, см. как будет у тебя)
HtmlElementCollection all_elements = he.FindChildrenByXPath(".//option[@value!='']");

if (all_elements.Count > 0) {
    // убираем выделение на выбранном по дефолту элементе
    foreach (HtmlElement he_opt in all_elements) {
        if (he_opt.OuterHtml.IndexOf("selected") != -1) {
            he_opt.RemoveAttribute("selected");
            break;
        }
    }

    int he_rnd = rnd.Next(all_elements.Count);
    HtmlElement he_option = all_elements.Elements[he_rnd];

    // иногда работает только через selecteditems
    //he.SetAttribute("selecteditems", he_option.InnerHtml);
    he_option.SetAttribute("selected", "selected");
    he_option.RiseEvent("onchange", "Full");
    
} else {
    throw new Exception("Не нашли вложенные option в select");
}
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)