Быстрое выделение чекбоксов

Hannes

Client
Регистрация
03.02.2016
Сообщения
501
Благодарностей
245
Баллы
43
Здравствуйте!

Мне потребовалось быстро выделить порядка 100 чекбоксов на странице. Зенкой это делается слишком долго, нашел c# код, который ускоряет работу.

C#:
HtmlElementCollection hecol = instance.ActiveTab.FindElementsByAttribute("input:checkbox", "fulltagname", "input:checkbox", "regexp");
    for(int i = 0; i< hecol.Count; i++)
    {
        hecol.Elements[i].Click();
    }
Признаки поиска, порядок:
  • Элемент который ищем
  • Атрибут по котором ищем (например если ссылка то href может быть)
  • Значение атрибута
  • Тип поиска (text/regexp)
Свои признаки ставите и запускаете код.
Первый раз запускаю этот код - выделяет 16 чекбоксов.
Второй раз - 32 чекбокса.
Третий раз - 48 чекбоксов.
Вообщем, с каждым новым запуском на 16 больше выделяет.

Подскажите, пожалуйста, почему так работает? Как можно поправить, что бы выделял сразу все чекбоксы?
 
Последнее редактирование:

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 395
Благодарностей
978
Баллы
113
Еще бы страницу видеть, на которой выделять. Выглядит так, будто контент подгружается динамически, и после того как выделяется последний чекбокс, подгружается новая часть )))
 
  • Спасибо
Реакции: Hannes

Hannes

Client
Регистрация
03.02.2016
Сообщения
501
Благодарностей
245
Баллы
43
@Moonwalker , так и оказалось. :bk:

У меня шаб автоматически проскроливал страницу до конца, а потом выполнялся блок выделения чекбоксов. В процессе тестов почему-то совершенно забыл, что страницу нужно проскроливать и тестировал этот код.

Спасибо огроменное! :bt:
 
  • Спасибо
Реакции: Moonwalker

MandaRRin

Client
Регистрация
23.07.2021
Сообщения
31
Благодарностей
3
Баллы
8
C#:
HtmlElementCollection hecol = instance.ActiveTab.FindElementsByAttribute("input:checkbox", "fulltagname", "input:checkbox", "regexp");
    for(int i = 0; i< hecol.Count; i++)
    {
        hecol.Elements[i].Click();
    }
Люди добрые на C# говорящие, а как бы в этот прекрасный код добавить проверку активирован ли input:checkbox с нужным нам именем id?

И если активирован, то не трогать его. Потому что сейчас код снимет с уже активированных input:checkbox галочки.

Нужное значение если активирован в outerHtml <input id="SomeName1" checked="checked" type="checkbox">

Если не активирован в outerHtml <input id="SomeName9" type="checkbox">
 
Последнее редактирование:

zombie

Client
Регистрация
14.08.2012
Сообщения
480
Благодарностей
118
Баллы
43
C#:
foreach (var he in instance.ActiveTab.FindElementsByAttribute("input:checkbox", "fulltagname", "input:checkbox", "regexp").Where(x => x.GetAttribute("checked") != "checked")) he.RiseEvent("click", instance.EmulationLevel);
 
  • Спасибо
Реакции: MandaRRin

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