Как заполнить все инпуты из выборки одним значением

toxass

Client
Регистрация
18.03.2010
Сообщения
280
Благодарностей
11
Баллы
18
Пример инпутов:
HTML:
<input name="items[207031][username]" id="username-207031" class="input-medium" value="ТУТ ТО ЧТО НУЖНО ЗАПОЛНИТЬ" type="text">
<input name="items[107031][username]" id="username-107031" class="input-medium" value="ТУТ ТО ЧТО НУЖНО ЗАПОЛНИТЬ" type="text">
<input name="items[507031][username]" id="username-507031" class="input-medium" value="ТУТ ТО ЧТО НУЖНО ЗАПОЛНИТЬ" type="text">
Вижу решение с циклами, но может без них как-то?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 613
Благодарностей
4 601
Баллы
113
без цикла никак. Только не пойму, что плохого в нём
 

toxass

Client
Регистрация
18.03.2010
Сообщения
280
Благодарностей
11
Баллы
18

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 106
Баллы
113
C#:
string value = project.Variables["Value"].Value;

Tab tab = instance.ActiveTab;
if (tab.IsBusy) tab.WaitDownloading();

HtmlElementCollection heCol = tab.FindElementsByAttribute("input:text", "id", "username-\d+", "regexp");

foreach (HtmlElement he in heCol.Elements)
    he.SetValue(value, "Full");
 
  • Спасибо
Реакции: sydoow

freeman

Client
Регистрация
31.07.2010
Сообщения
130
Благодарностей
138
Баллы
43
Код:
var elements = instance.ActiveTab.FindElementsByXPath("//input[starts-with(@id, 'username-')]");

foreach (var elem in elements)
{
    elem.SetValue("ТУТ ТО ЧТО НУЖНО ЗАПОЛНИТЬ", "Full");
    instance.WaitFieldEmulationDelay();
}
 
  • Спасибо
Реакции: sydoow

sydoow

Client
Регистрация
22.06.2011
Сообщения
280
Благодарностей
143
Баллы
43
Dimionix , для чего вы использовали "heCol.Elements", а не просто "heCol" в условиях foreach ?

freeman , для чего вы добавили "instance.WaitFieldEmulationDelay();" ?
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 106
Баллы
113
  • Спасибо
Реакции: sydoow

doc

Client
Регистрация
30.03.2012
Сообщения
8 613
Благодарностей
4 601
Баллы
113
  • Спасибо
Реакции: sydoow и Dimionix

freeman

Client
Регистрация
31.07.2010
Сообщения
130
Благодарностей
138
Баллы
43
freeman , для чего вы добавили "instance.WaitFieldEmulationDelay();" ?
Для ожидания завершения заполнения поля при посимвольном вводе. Иначе инпут не успевает заполниться до конца при задержке больше 150-200 мс.
 
  • Спасибо
Реакции: sydoow

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