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

morfeus

Client
Joined
Feb 23, 2012
Messages
175
Reaction score
29
Points
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
Joined
Nov 6, 2018
Messages
11,789
Reaction score
5,726
Points
113
выбирает по номеру в коллекции all_elements.Elements
HtmlElement he_option = all_elements.Elements[sotrydn];

54090


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

вместо 10 свое значение подставить
 
  • Thank you
Reactions: morfeus

morfeus

Client
Joined
Feb 23, 2012
Messages
175
Reaction score
29
Points
28
выбирает по номеру в коллекции all_elements.Elements
HtmlElement he_option = all_elements.Elements[sotrydn];

View attachment 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
Joined
Nov 6, 2018
Messages
11,789
Reaction score
5,726
Points
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);
}
 
  • Thank you
Reactions: morfeus

morfeus

Client
Joined
Feb 23, 2012
Messages
175
Reaction score
29
Points
28
Ошибка :
Компиляция кода Ошибка в действии "CS0029" "Cannot implicitly convert type 'ZennoLab.CommandCenter.HtmlElementCollection' to 'ZennoLab.CommandCenter.HtmlElement'". [Строка: 19; Cтолбец: 29]

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

Phoenix78

Client
Read only
Joined
Nov 6, 2018
Messages
11,789
Reaction score
5,726
Points
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);
}
 
Last edited:
  • Thank you
Reactions: morfeus

morfeus

Client
Joined
Feb 23, 2012
Messages
175
Reaction score
29
Points
28
В ошибку не падает, но и не выбирает...
 

Phoenix78

Client
Read only
Joined
Nov 6, 2018
Messages
11,789
Reaction score
5,726
Points
113
ага. там скобочка квадратная потерялась в xpath, вот эту строчку вставьте вместо ущербной
string xpath = ".//option[@value='"+project.Variables["ID_sotrydnika"].Value+"']";

отредактировал код
 
  • Thank you
Reactions: morfeus

morfeus

Client
Joined
Feb 23, 2012
Messages
175
Reaction score
29
Points
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
Joined
Feb 23, 2012
Messages
175
Reaction score
29
Points
28
Скорость такая же низкая как и до этого...

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

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

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

Phoenix78

Client
Read only
Joined
Nov 6, 2018
Messages
11,789
Reaction score
5,726
Points
113
а у вас что стоит в настройках проекта ? может эмуляцию скорости ввода уменьшить до самого минимума ?
 
  • Thank you
Reactions: morfeus

morfeus

Client
Joined
Feb 23, 2012
Messages
175
Reaction score
29
Points
28
Настройки по умолчанию стоят ничего не менял...

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

Phoenix78

Client
Read only
Joined
Nov 6, 2018
Messages
11,789
Reaction score
5,726
Points
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
Joined
Feb 23, 2012
Messages
175
Reaction score
29
Points
28
Все просто шикарно меньше секунды выбирает!!!

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

:ay:
 

olegboev

Client
Joined
Sep 10, 2019
Messages
24
Reaction score
1
Points
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
Joined
Nov 6, 2018
Messages
11,789
Reaction score
5,726
Points
113

morfeus

Client
Joined
Feb 23, 2012
Messages
175
Reaction score
29
Points
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
Joined
Sep 10, 2019
Messages
24
Reaction score
1
Points
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
Joined
Nov 6, 2018
Messages
11,789
Reaction score
5,726
Points
113

olegboev

Client
Joined
Sep 10, 2019
Messages
24
Reaction score
1
Points
3
c 511 строчки начало
 

olegboev

Client
Joined
Sep 10, 2019
Messages
24
Reaction score
1
Points
3
скопируйте html страницы и в текстовом файле прикрепите. так проще будет посмотреть.
 

Attachments

Phoenix78

Client
Read only
Joined
Nov 6, 2018
Messages
11,789
Reaction score
5,726
Points
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
Joined
Sep 10, 2019
Messages
24
Reaction score
1
Points
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
Joined
Sep 10, 2019
Messages
24
Reaction score
1
Points
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
Joined
Sep 10, 2019
Messages
24
Reaction score
1
Points
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
Joined
Nov 6, 2018
Messages
11,789
Reaction score
5,726
Points
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
Joined
Nov 6, 2018
Messages
11,789
Reaction score
5,726
Points
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
Joined
Sep 10, 2019
Messages
24
Reaction score
1
Points
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
Joined
Dec 18, 2016
Messages
53
Reaction score
38
Points
18
все удачно получилось. вот вариант с мгновенной установкой нужного элемента.
Приветствую, ты пробовал писать регистратор shopify?
там тэги без атрибута selected и даже на простое событие клик выпадающее меню не реагирует...
Сама трагедия происходит при регистрации на странице вида
{login}.myshopify.com/admin/account_setup
 

Advert31337

Client
Joined
Dec 18, 2016
Messages
53
Reaction score
38
Points
18
нужного элемента
Вот так выглядит select
55281


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


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

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)