Помогите с Select и Option плз...

morfeus

Client
Регистрация
23.02.2012
Сообщения
171
Благодарностей
28
Баллы
28
Всем привет!
Нужна помощь с шаблоном...

Уровень с# у меня -1

в общем есть DOM 1977 строек с тэгом option

Шаблон есть но очень медленно работает....


HTML:
<div class="form-group row">
                <label class="col-3 col-form-label" for="staff-id">Сотрудник</label>
                <div class="col-9">
                <select class="form-control select2-hidden-accessible" id="staff-id" name="staff-id" data-select2-id="staff-id" tabindex="-1" aria-hidden="true">
                <option value="0" data-select2-id="2">Нет</option>
                <option value="10" data-select2-id="15">*рх***ов И**рь О**ич</option>
                <option value="2" data-select2-id="16">**ышев Ко***нтин С***вич</option>
                <option value="55" data-select2-id="17">**лт**в **иль Ол**вич</option>
                <option value="44" data-select2-id="18">***в ***тин ***вич</option>
                <option value="500" data-select2-id="19">***сов Ма***м Ни**вич</option>
                <option value="648" data-select2-id="20">***ников ***андр Ва***ьевич</option>
                <option value="725" data-select2-id="21">***ина **на Ф**вна</option>
                </select>
               
                <span class="select2 select2-container select2-container--default select2-container--below" dir="ltr" data-select2-id="1" style="width: auto;"><span class="selection"><span class="select2-selection select2-selection--single" role="combobox" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-disabled="false" aria-labelledby="select2-staff-id-container"><span class="select2-selection__rendered" id="select2-staff-id-container" role="textbox" aria-readonly="true" title="Нет">Нет</span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span></span></span><span class="dropdown-wrapper" aria-hidden="true"></span></span></div>
               
                </div>
вот код C# что нашел на форуме и как смог поправил

C#:
//Random rnd = new Random();
//string kat = project.Variables["kategoriya"].Value;
int sotrydn = int.Parse(project.Variables["ID_sotrydnika"].Value);

HtmlElement he = instance.ActiveTab.MainDocument.FindElementById("staff-id");
HtmlElementCollection all_elements = he.FindChildrenByXPath(".//option");

if (all_elements.Count > 0) {
    // удаляем атрибут selected со старого элемента
    foreach (HtmlElement he_opt in all_elements) {
        if (he_opt.OuterHtml.IndexOf("selected") != -1) {
            he_opt.RemoveAttribute("selected");
        }
    }
  
  //  int he_rnd = rnd.Next(0, all_elements.Count);
    HtmlElement he_option = all_elements.Elements[sotrydn];

    // Вариант 1:
    he_option.SetAttribute("selected", "selected");
    he_option.RiseEvent("onchange", "Full");

    // Вариант 2: (раскоментировать его и закомментировать предыдущий)
    //he.SetAttribute("selecteditems", he_option.InnerHtml);
}
оно работает но выбирает не по value, а как я понял по порядковому номеру который скорее всего формируется при парсинге т к скажем если переменная

sotrydn=2 то он выберет Фамилию <option value="10" data-select2-id="15">*рх***ов И**рь О**ич</option>

Подскажите плз как поправить...

Почему то стандартными методами zenno я вообще эти поля выбрать не могу....

select вижу а как option выбрать неполучается...
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
выбирает по номеру в коллекции all_elements.Elements
HtmlElement he_option = all_elements.Elements[sotrydn];

54090


можно так выбрать option //select[@id='staff-id']/option[@value='10']

вместо 10 свое значение подставить
 
  • Спасибо
Реакции: morfeus

morfeus

Client
Регистрация
23.02.2012
Сообщения
171
Благодарностей
28
Баллы
28
выбирает по номеру в коллекции all_elements.Elements
HtmlElement he_option = all_elements.Elements[sotrydn];

Посмотреть вложение 54090

можно так выбрать option //select[@id='staff-id']/option[@value='10']

вместо 10 свое значение подставить
Записал так

HtmlElement he_option = option //select[@id='staff-id']/option[@value='10'];

валится в ошибку

HtmlElement he_option = "option //select[@id='staff-id']/option[@value='10']";

так тоже =((

помогите плз не знаю С# совсем ...
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
так попробуйте, без возможности попробовать, конечно сложновато.
ID_sotrydnika надо заполнить, например 10
C#:
//Random rnd = new Random();
//string kat = project.Variables["kategoriya"].Value;
int sotrydn = int.Parse(project.Variables["ID_sotrydnika"].Value);
string xpath = ".//option[@value='"+project.Variables["ID_sotrydnika"].Value+"'";

HtmlElement he = instance.ActiveTab.MainDocument.FindElementById("staff-id");
HtmlElementCollection all_elements = he.FindChildrenByXPath(".//option");

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

  //  int he_rnd = rnd.Next(0, all_elements.Count);
    HtmlElement he_option = he.FindChildrenByXPath(xpath);

    // Вариант 1:
    he_option.SetAttribute("selected", "selected");
    he_option.RiseEvent("onchange", "Full");

    // Вариант 2: (раскоментировать его и закомментировать предыдущий)
    //he.SetAttribute("selecteditems", he_option.InnerHtml);
}
 
  • Спасибо
Реакции: morfeus

morfeus

Client
Регистрация
23.02.2012
Сообщения
171
Благодарностей
28
Баллы
28
Ошибка :
Компиляция кода Ошибка в действии "CS0029" "Cannot implicitly convert type 'ZennoLab.CommandCenter.HtmlElementCollection' to 'ZennoLab.CommandCenter.HtmlElement'". [Строка: 19; Cтолбец: 29]

К сожалению сайт не могу показать вн база на работе... дали заполнять на самоизоляции, а там 100500 строк пальцы сотрешь пока заполнишь... шаб накидал все работает но вот с последним не получается...
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
так... вот такой вариант попробуем
C#:
//Random rnd = new Random();
//string kat = project.Variables["kategoriya"].Value;
int sotrydn = int.Parse(project.Variables["ID_sotrydnika"].Value);
string xpath = ".//option[@value='"+project.Variables["ID_sotrydnika"].Value+"']";

HtmlElement he = instance.ActiveTab.MainDocument.FindElementById("staff-id");
HtmlElementCollection all_elements = he.FindChildrenByXPath(".//option");
HtmlElementCollection target_elements = he.FindChildrenByXPath(xpath);

if (all_elements.Count > 0 && target_elements.Count>0 ) {
    // удаляем атрибут selected со старого элемента
    foreach (HtmlElement he_opt in all_elements) {
        if (he_opt.OuterHtml.IndexOf("selected") != -1) {
            he_opt.RemoveAttribute("selected");
        }
    }

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

    // Вариант 1:
    he_option.SetAttribute("selected", "selected");
    he_option.RiseEvent("onchange", "Full");

    // Вариант 2: (раскоментировать его и закомментировать предыдущий)
    //he.SetAttribute("selecteditems", he_option.InnerHtml);
}
 
Последнее редактирование:
  • Спасибо
Реакции: morfeus

morfeus

Client
Регистрация
23.02.2012
Сообщения
171
Благодарностей
28
Баллы
28
В ошибку не падает, но и не выбирает...
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
ага. там скобочка квадратная потерялась в xpath, вот эту строчку вставьте вместо ущербной
string xpath = ".//option[@value='"+project.Variables["ID_sotrydnika"].Value+"']";

отредактировал код
 
  • Спасибо
Реакции: morfeus

morfeus

Client
Регистрация
23.02.2012
Сообщения
171
Благодарностей
28
Баллы
28
Работает!!! Вдруг кому пригодится!!!

C#:
//Random rnd = new Random();
//string kat = project.Variables["kategoriya"].Value;

//ID_sotrydnika  - переменная из зенопостера!!!

int sotrydn = int.Parse(project.Variables["ID_sotrydnika"].Value);
string xpath = ".//option[@value='"+project.Variables["ID_sotrydnika"].Value+"']";

HtmlElement he = instance.ActiveTab.MainDocument.FindElementById("staff-id");
HtmlElementCollection all_elements = he.FindChildrenByXPath(".//option");
HtmlElementCollection target_elements = he.FindChildrenByXPath(xpath);

if (all_elements.Count > 0 && target_elements.Count>0 ) {
    // удаляем атрибут selected со старого элемента
    foreach (HtmlElement he_opt in all_elements) {
        if (he_opt.OuterHtml.IndexOf("selected") != -1) {
            he_opt.RemoveAttribute("selected");
        }
    }

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

    // Вариант 1:
    he_option.SetAttribute("selected", "selected");
    he_option.RiseEvent("onchange", "Full");

    // Вариант 2: (раскоментировать его и закомментировать предыдущий)
    //he.SetAttribute("selecteditems", he_option.InnerHtml);
}
 

morfeus

Client
Регистрация
23.02.2012
Сообщения
171
Благодарностей
28
Баллы
28
Скорость такая же низкая как и до этого...

Проблему не решил особо...

Можно ли как то еще решить задачу ???

Там если начинаешь набирать фамилию в поле вылазят как подсказка фамилии... может как то это можно в экшенах использовать ???
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
а у вас что стоит в настройках проекта ? может эмуляцию скорости ввода уменьшить до самого минимума ?
 
  • Спасибо
Реакции: morfeus

morfeus

Client
Регистрация
23.02.2012
Сообщения
171
Благодарностей
28
Баллы
28
Настройки по умолчанию стоят ничего не менял...

эмуляцию скорости ввода уменьшить до самого минимума ?
Попробовал так же примерно минуту выбирает фамилию...
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
вот так попробуйте
C#:
int sotrydn = int.Parse(project.Variables["ID_sotrydnika"].Value);
string xpath = ".//option[@value='"+project.Variables["ID_sotrydnika"].Value+"']";

HtmlElement he = instance.ActiveTab.MainDocument.FindElementById("staff-id");
HtmlElementCollection all_elements = he.FindChildrenByXPath(".//option[@selected]"); 
HtmlElementCollection target_elements = he.FindChildrenByXPath(xpath); 

if (all_elements.Count > 0 && target_elements.Count>0 ) {
    // удаляем атрибут selected со старого элемента
    foreach (HtmlElement he_opt in all_elements) {
        if (he_opt.OuterHtml.IndexOf("selected") != -1) {
            he_opt.RemoveAttribute("selected");
        }
    }
 
    HtmlElement he_option = target_elements.Elements[0];
    // Вариант 1:
    he_option.SetAttribute("selected", "selected");
    he_option.RiseEvent("onchange", "Full");

    // Вариант 2: (раскоментировать его и закомментировать предыдущий)
    //he.SetAttribute("selecteditems", he_option.InnerHtml);
}
 

morfeus

Client
Регистрация
23.02.2012
Сообщения
171
Благодарностей
28
Баллы
28
Все просто шикарно меньше секунды выбирает!!!

Очень большое спасибо!!!
Очень помогли!!!:bi:

:ay:
 

olegboev

Client
Регистрация
10.09.2019
Сообщения
24
Благодарностей
1
Баллы
3
вот так попробуйте
C#:
int sotrydn = int.Parse(project.Variables["ID_sotrydnika"].Value);
string xpath = ".//option[@value='"+project.Variables["ID_sotrydnika"].Value+"']";

HtmlElement he = instance.ActiveTab.MainDocument.FindElementById("staff-id");
HtmlElementCollection all_elements = he.FindChildrenByXPath(".//option[@selected]");
HtmlElementCollection target_elements = he.FindChildrenByXPath(xpath);

if (all_elements.Count > 0 && target_elements.Count>0 ) {
    // удаляем атрибут selected со старого элемента
    foreach (HtmlElement he_opt in all_elements) {
        if (he_opt.OuterHtml.IndexOf("selected") != -1) {
            he_opt.RemoveAttribute("selected");
        }
    }

    HtmlElement he_option = target_elements.Elements[0];
    // Вариант 1:
    he_option.SetAttribute("selected", "selected");
    he_option.RiseEvent("onchange", "Full");

    // Вариант 2: (раскоментировать его и закомментировать предыдущий)
    //he.SetAttribute("selecteditems", he_option.InnerHtml);
}
Подскажите, пожалуйста, что нужно заменить в C#, если у меня вот такая структура кода страницы:
<div class="form-field term-parent-wrap">
<label for="parent">Родительская категория</label>
<select name='parent' id='parent' class='postform' >
<option value='-1'>Нет</option>
<option class="level-0" value="688">Brown P</option>
<option class="level-0" value="1284">Hill N</option>
<option class="level-0" value="15">Без категории</option>
<option class="level-0" value="1470">да В</option>
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113

morfeus

Client
Регистрация
23.02.2012
Сообщения
171
Благодарностей
28
Баллы
28
Вроде как у меня может заработает

вместо ID_sotrydnika используй свою переменную проекта

насколько я понял код

эта строка находит тэг select в твоем случае по id='parent'

C#:
HtmlElement he = instance.ActiveTab.MainDocument.FindElementById("parent");
а вот тут происходит волшебство

C#:
int sotrydn = int.Parse(project.Variables["ID_sotrydnika"].Value);
string xpath = ".//option[@value='"+project.Variables["ID_sotrydnika"].Value+"']";
тут удаляется старый атрибут selected

C#:
if (all_elements.Count > 0 && target_elements.Count>0 ) {
    // удаляем атрибут selected со старого элемента
    foreach (HtmlElement he_opt in all_elements) {
        if (he_opt.OuterHtml.IndexOf("selected") != -1) {
            he_opt.RemoveAttribute("selected");
        }
    }
тут он присваивается новому элементу

C#:
HtmlElement he_option = target_elements.Elements[0];
    // Вариант 1:
    he_option.SetAttribute("selected", "selected");
    he_option.RiseEvent("onchange", "Full");
Там где волшебство мне не понятно...

Но по пробуйте код ниже вдруг заработает =)))


C#:
int sotrydn = int.Parse(project.Variables["ID_sotrydnika"].Value);
string xpath = ".//option[@value='"+project.Variables["ID_sotrydnika"].Value+"']";

HtmlElement he = instance.ActiveTab.MainDocument.FindElementById("parent");
HtmlElementCollection all_elements = he.FindChildrenByXPath(".//option[@selected]");
HtmlElementCollection target_elements = he.FindChildrenByXPath(xpath);

if (all_elements.Count > 0 && target_elements.Count>0 ) {
    // удаляем атрибут selected со старого элемента
    foreach (HtmlElement he_opt in all_elements) {
        if (he_opt.OuterHtml.IndexOf("selected") != -1) {
            he_opt.RemoveAttribute("selected");
        }
    }
 
    HtmlElement he_option = target_elements.Elements[0];
    // Вариант 1:
    he_option.SetAttribute("selected", "selected");
    he_option.RiseEvent("onchange", "Full");

    // Вариант 2: (раскоментировать его и закомментировать предыдущий)
    //he.SetAttribute("selecteditems", he_option.InnerHtml);
}
 

olegboev

Client
Регистрация
10.09.2019
Сообщения
24
Благодарностей
1
Баллы
3
Вроде как у меня может заработает

вместо ID_sotrydnika используй свою переменную проекта

насколько я понял код

эта строка находит тэг select в твоем случае по id='parent'

C#:
HtmlElement he = instance.ActiveTab.MainDocument.FindElementById("parent");
а вот тут происходит волшебство

C#:
int sotrydn = int.Parse(project.Variables["ID_sotrydnika"].Value);
string xpath = ".//option[@value='"+project.Variables["ID_sotrydnika"].Value+"']";
тут удаляется старый атрибут selected

C#:
if (all_elements.Count > 0 && target_elements.Count>0 ) {
    // удаляем атрибут selected со старого элемента
    foreach (HtmlElement he_opt in all_elements) {
        if (he_opt.OuterHtml.IndexOf("selected") != -1) {
            he_opt.RemoveAttribute("selected");
        }
    }
тут он присваивается новому элементу

C#:
HtmlElement he_option = target_elements.Elements[0];
    // Вариант 1:
    he_option.SetAttribute("selected", "selected");
    he_option.RiseEvent("onchange", "Full");
Там где волшебство мне не понятно...

Но по пробуйте код ниже вдруг заработает =)))


C#:
int sotrydn = int.Parse(project.Variables["ID_sotrydnika"].Value);
string xpath = ".//option[@value='"+project.Variables["ID_sotrydnika"].Value+"']";

HtmlElement he = instance.ActiveTab.MainDocument.FindElementById("parent");
HtmlElementCollection all_elements = he.FindChildrenByXPath(".//option[@selected]");
HtmlElementCollection target_elements = he.FindChildrenByXPath(xpath);

if (all_elements.Count > 0 && target_elements.Count>0 ) {
    // удаляем атрибут selected со старого элемента
    foreach (HtmlElement he_opt in all_elements) {
        if (he_opt.OuterHtml.IndexOf("selected") != -1) {
            he_opt.RemoveAttribute("selected");
        }
    }

    HtmlElement he_option = target_elements.Elements[0];
    // Вариант 1:
    he_option.SetAttribute("selected", "selected");
    he_option.RiseEvent("onchange", "Full");

    // Вариант 2: (раскоментировать его и закомментировать предыдущий)
    //he.SetAttribute("selecteditems", he_option.InnerHtml);
}
Не получается. Я вместо "ID_sotrydnika" в коде вставил название своей переменной, в которой у меня номер value уже записан. код выполняется, но ничего не происходит. Может, потому что у меня между тегом option и атрибутом value еще и class прописан?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113

olegboev

Client
Регистрация
10.09.2019
Сообщения
24
Благодарностей
1
Баллы
3
c 511 строчки начало
 

olegboev

Client
Регистрация
10.09.2019
Сообщения
24
Благодарностей
1
Баллы
3

Вложения

  • 155,6 КБ Просмотры: 121

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
ну в вашем случает вариант 2-й подошел :-)
C#:
int sotrydn = int.Parse(project.Variables["ID_sotrydnika"].Value);
string xpath = ".//option[@value='"+project.Variables["ID_sotrydnika"].Value+"']";

HtmlElement he = instance.ActiveTab.MainDocument.FindElementById("parent");
HtmlElementCollection all_elements = he.FindChildrenByXPath(".//option[@selected]");
HtmlElementCollection target_elements = he.FindChildrenByXPath(xpath);

if (all_elements.Count > 0 && target_elements.Count>0 ) {
    // удаляем атрибут selected со старого элемента
    foreach (HtmlElement he_opt in all_elements) {
        if (he_opt.OuterHtml.IndexOf("selected") != -1) {
            he_opt.RemoveAttribute("selected");
        }
    }
}
    HtmlElement he_option = target_elements.Elements[0];
    // Вариант 1:
//    he_option.SetAttribute("selected", "selected");
//    he_option.RiseEvent("onchange", "Full");

    // Вариант 2: (раскоментировать его и закомментировать предыдущий)
    he.SetAttribute("selecteditems", he_option.InnerHtml);
 

olegboev

Client
Регистрация
10.09.2019
Сообщения
24
Благодарностей
1
Баллы
3
ну в вашем случает вариант 2-й подошел :-)
C#:
int sotrydn = int.Parse(project.Variables["ID_sotrydnika"].Value);
string xpath = ".//option[@value='"+project.Variables["ID_sotrydnika"].Value+"']";

HtmlElement he = instance.ActiveTab.MainDocument.FindElementById("parent");
HtmlElementCollection all_elements = he.FindChildrenByXPath(".//option[@selected]");
HtmlElementCollection target_elements = he.FindChildrenByXPath(xpath);

if (all_elements.Count > 0 && target_elements.Count>0 ) {
    // удаляем атрибут selected со старого элемента
    foreach (HtmlElement he_opt in all_elements) {
        if (he_opt.OuterHtml.IndexOf("selected") != -1) {
            he_opt.RemoveAttribute("selected");
        }
    }
}
    HtmlElement he_option = target_elements.Elements[0];
    // Вариант 1:
//    he_option.SetAttribute("selected", "selected");
//    he_option.RiseEvent("onchange", "Full");

    // Вариант 2: (раскоментировать его и закомментировать предыдущий)
    he.SetAttribute("selecteditems", he_option.InnerHtml);
Я извиняюсь за такой вопрос, но как выбрать второй вариант?))
 

olegboev

Client
Регистрация
10.09.2019
Сообщения
24
Благодарностей
1
Баллы
3
int sotrydn = int.Parse(project.Variables["q1"].Value);
string xpath = ".//option[@value='"+project.Variables["q1"].Value+"']";

HtmlElement he = instance.ActiveTab.MainDocument.FindElementById("parent");
HtmlElementCollection all_elements = he.FindChildrenByXPath(".//option[@selected]");
HtmlElementCollection target_elements = he.FindChildrenByXPath(xpath);

if (all_elements.Count > 0 && target_elements.Count>0 ) {
// удаляем атрибут selected со старого элемента
foreach (HtmlElement he_opt in all_elements) {
if (he_opt.OuterHtml.IndexOf("selected") != -1) {
he_opt.RemoveAttribute("selected");
}
}
}
HtmlElement he_option = target_elements.Elements[0];
// Вариант 1:
// he_option.SetAttribute("selected", "selected");
// he_option.RiseEvent("onchange", "Full");

// Вариант 2: (раскоментировать его и закомментировать предыдущий)
he.SetAttribute("selecteditems", he_option.InnerHtml);
 

olegboev

Client
Регистрация
10.09.2019
Сообщения
24
Благодарностей
1
Баллы
3
int sotrydn = int.Parse(project.Variables["q1"].Value);
string xpath = ".//option[@value='"+project.Variables["q1"].Value+"']";

HtmlElement he = instance.ActiveTab.MainDocument.FindElementById("parent");
HtmlElementCollection all_elements = he.FindChildrenByXPath(".//option[@selected]");
HtmlElementCollection target_elements = he.FindChildrenByXPath(xpath);

if (all_elements.Count > 0 && target_elements.Count>0 ) {
// удаляем атрибут selected со старого элемента
foreach (HtmlElement he_opt in all_elements) {
if (he_opt.OuterHtml.IndexOf("selected") != -1) {
he_opt.RemoveAttribute("selected");
}
}
}
HtmlElement he_option = target_elements.Elements[0];
// Вариант 1:
// he_option.SetAttribute("selected", "selected");
// he_option.RiseEvent("onchange", "Full");

// Вариант 2: (раскоментировать его и закомментировать предыдущий)
he.SetAttribute("selecteditems", he_option.InnerHtml);
код выполняет, но выбор не осуществляется
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
вот переделал. рабочий, но тормозной. теоретически можно пользоваться при текущем количестве элементов в селекте. если получиться ускорить, выложу другой вариант.
пока можешь этот попробовать.
C#:
//---- входные параметры -------------------------------------------------
string data_seach     = @"value=""" + project.Variables["ID_value"].Value;
string xpath         = "//*[@id='parent']";
string xpath_opt     = ".//option";
//-------------------------------------------------------------------------
int id1=0;
var he2= instance.ActiveTab.FindElementByXPath(xpath,0);
HtmlElementCollection all_elements = he2.FindChildrenByXPath(xpath_opt);
if (all_elements.Count > 0) {
    foreach (HtmlElement he_opt in all_elements) {
        if (he_opt.OuterHtml.IndexOf(data_seach) != -1) {
            he2.SetValue(id1.ToString(), "None", false);
            return 0;
        }
        id1++;
    }
}
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
все удачно получилось. вот вариант с мгновенной установкой нужного элемента.
C#:
//---- входные параметры -------------------------------------------------
string data_seach     = @"value=""" + project.Variables["ID_value"].Value;
string xpath         = "//*[@id='parent']";
string xpath_opt     = ".//option";
//-------------------------------------------------------------------------
string result = "" ; int id1=0; List<string> lst_Find = new List<string>();
var he2= instance.ActiveTab.FindElementByXPath(xpath,0);
try { lst_Find = ZennoPoster.Parser.ParseByXpath(he2.OuterHtml, xpath_opt, "OuterHtml" ).ToList(); } catch{}
if (lst_Find.Count > 0) {
    foreach (string he_opt in lst_Find) {
        if (he_opt.IndexOf(data_seach) != -1) {
            he2.SetValue(id1.ToString(), "None", false);
            return 0;
        }
        id1++;
    }
}
 

olegboev

Client
Регистрация
10.09.2019
Сообщения
24
Благодарностей
1
Баллы
3
все удачно получилось. вот вариант с мгновенной установкой нужного элемента.
C#:
//---- входные параметры -------------------------------------------------
string data_seach     = @"value=""" + project.Variables["ID_value"].Value;
string xpath         = "//*[@id='parent']";
string xpath_opt     = ".//option";
//-------------------------------------------------------------------------
string result = "" ; int id1=0; List<string> lst_Find = new List<string>();
var he2= instance.ActiveTab.FindElementByXPath(xpath,0);
try { lst_Find = ZennoPoster.Parser.ParseByXpath(he2.OuterHtml, xpath_opt, "OuterHtml" ).ToList(); } catch{}
if (lst_Find.Count > 0) {
    foreach (string he_opt in lst_Find) {
        if (he_opt.IndexOf(data_seach) != -1) {
            he2.SetValue(id1.ToString(), "None", false);
            return 0;
        }
        id1++;
    }
}
Супер! Спасибо! Выполняет отлично за секунду!
 

Advert31337

Client
Регистрация
18.12.2016
Сообщения
53
Благодарностей
38
Баллы
18
все удачно получилось. вот вариант с мгновенной установкой нужного элемента.
Приветствую, ты пробовал писать регистратор shopify?
там тэги без атрибута selected и даже на простое событие клик выпадающее меню не реагирует...
Сама трагедия происходит при регистрации на странице вида
{login}.myshopify.com/admin/account_setup
 

Advert31337

Client
Регистрация
18.12.2016
Сообщения
53
Благодарностей
38
Баллы
18
нужного элемента
Вот так выглядит select
55281


А вот тут происходит само изменение при ручном выборе
55280


Пробовал менять сам innertext, но зенка кричит что это только для чтения....
 

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