Поиск поля ввода

QuZ

Client
Регистрация
26.02.2014
Сообщения
17
Благодарностей
0
Баллы
1
Добрый вечер. Понимаю, что это наверно самый типовой вопрос на данном портале, но ответ найти не смог.

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

В аттаче скрин.
Спасибо.
 

Вложения

[Pacman]

Client
Регистрация
29.05.2017
Сообщения
279
Благодарностей
168
Баллы
43
Имхо для такого лучше использовать XPath, намного более точный и гибкий инструмент, кубики когда быстро написать нужно. Не все к сожалению можно прописать через конструктор действий, ну или я не умею)

Пример с кликом на некой кнопке войти.
Код:
Tab tab = instance.ActiveTab;
HtmlElement buttonVoiti = tab.FindElementByXPath("//button[contains(text(),'Войти')]", 0);
buttonVoiti.RiseEvent("click", "Full");
Примеры поиска
Код:
HtmlElement inputPass = tab.FindElementByXPath("//input[@id='index_pass']", 0);
HtmlElement el = tab.FindElementByXPath("//div[@type='poll']/descendant::a[@class='open_offer']", 0);
HtmlElement el = tab.FindElementByXPath("//div[contains(text(),'Старт:')]/div[@class='info_msg']/div", 0);
Смысл тот же, но прописать можно гораздо точнее, и больше тегов.
Например, тут на форуме поиск кнопки ответить на сообщение будет выглядить(один из вариантов) как то так:

HtmlElement el = tab.FindElementByXPath("//input[@class='button primary']", 0);
Так выглядит в теле html:
<input type="submit" class="button primary" value="Ответить" accesskey="s">
 
Последнее редактирование:
  • Спасибо
Реакции: iBotovod

QuZ

Client
Регистрация
26.02.2014
Сообщения
17
Благодарностей
0
Баллы
1
Имхо для такого лучше использовать XPath, намного более точный и гибкий инструмент, кубики когда быстро написать нужно. Не все к сожалению можно прописать через конструктор действий, ну или я не умею)

Пример с кликом на некой кнопке войти.
Код:
Tab tab = instance.ActiveTab;
HtmlElement buttonVoiti = tab.FindElementByXPath("//button[contains(text(),'Войти')]", 0);
buttonVoiti.RiseEvent("click", "Full");
Примеры поиска
Код:
HtmlElement inputPass = tab.FindElementByXPath("//input[@id='index_pass']", 0);
HtmlElement el = tab.FindElementByXPath("//div[@type='poll']/descendant::a[@class='open_offer']", 0);
HtmlElement el = tab.FindElementByXPath("//div[contains(text(),'Старт:')]/div[@class='info_msg']/div", 0);
Смысл тот же, но прописать можно гораздо точнее, и больше тегов.
Например, тут на форуме поиск кнопки ответить на сообщение будет выглядить(один из вариантов) как то так:

HtmlElement el = tab.FindElementByXPath("//input[@class='button primary']", 0);
Так выглядит в теле html:
<input type="submit" class="button primary" value="Ответить" accesskey="s">

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

Код:
<tr id="tr_ACTIVE"><td width="40%" class="adm-detail-content-cell-l">Активность:</td><td class="adm-detail-content-cell-r"><input type="hidden" name="ACTIVE" value="N">
                <input type="checkbox" name="ACTIVE" value="Y" checked="" id="designed_checkbox_0.20475555828105452" class="adm-designed-checkbox"><label class="adm-designed-checkbox-label" for="designed_checkbox_0.20475555828105452" title=""></label></td></tr>
Если не сложно, могли бы для моего кода показать на примере?

Чуть поясню. У меня много тегов <tr id="****">, которые можно четко идентифицировать. В данном теге содержится по 1-му элементу ( полю ввода, выбора, чекбоксу и т.д.) которые имеют повторяющиеся у всех элементов class="adm-designed-checkbox"> ( к примеру), с которыми мне предстоит работать. Другие способы идентификации будут очень похожи на кастыли.
 
Последнее редактирование:

[Pacman]

Client
Регистрация
29.05.2017
Сообщения
279
Благодарностей
168
Баллы
43
Здорово, спасибо. Узнал что необходимо гуглить) Но, пока не смог до конца разобраться с Вашим предложением, хотя, Вы очень хорошо описали.

Код:
<tr id="tr_ACTIVE"><td width="40%" class="adm-detail-content-cell-l">Активность:</td><td class="adm-detail-content-cell-r"><input type="hidden" name="ACTIVE" value="N">
                <input type="checkbox" name="ACTIVE" value="Y" checked="" id="designed_checkbox_0.20475555828105452" class="adm-designed-checkbox"><label class="adm-designed-checkbox-label" for="designed_checkbox_0.20475555828105452" title=""></label></td></tr>
Если не сложно, могли бы для моего кода показать на примере?

Чуть поясню. У меня много тегов <tr id="****">, которые можно четко идентифицировать. В данном теге содержится по 1-му элементу ( полю ввода, выбора, чекбоксу и т.д.) которые имеют повторяющиеся у всех элементов class="adm-designed-checkbox"> ( к примеру), с которыми мне предстоит работать. Другие способы идентификации будут очень похожи на кастыли.
Лучше скиньте сайт в лс, и скажите какой элемент нужно найти, так сложно что то подсказать.
 

КарлМаркс

Активный пользователь
Регистрация
11.07.2017
Сообщения
200
Благодарностей
64
Баллы
28

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с КарлМаркс какие-либо сделки.

Код:
//ставим значение 0 всем чекбоксам
HtmlElementCollection hecol = instance.ActiveTab.FindElementsByAttribute("input:checkbox", "fulltagname", "input:checkbox", "regexp");
for(int i = 0; i< hecol.Count; i++)
{
    hecol.Elements[i].SetValue("0", instance.EmulationLevel, true);
}
 

izunag

Пользователь
Регистрация
23.08.2017
Сообщения
125
Благодарностей
25
Баллы
18
Имхо для такого лучше использовать XPath
Полностью поддерживаю, Xpath рулит. Один минус - много длине CSS селектора.

Добрый вечер. Понимаю, что это наверно самый типовой вопрос на данном портале, но ответ найти не смог.
Как альтернативу можешь использовать JavaScript в соответствующем блоке действий. И писать что-то наподобие:

var el = document.querySelector('#j-i-form .j-cat-select-link');
if (el !== null) { el.click(); }

el = document.querySelectorAll('#j-i-form .i-formpage__catselect__popup__mainlist_desktop > a');
if (el.length >= 1) { el.item(0).click(); }
 

QuZ

Client
Регистрация
26.02.2014
Сообщения
17
Благодарностей
0
Баллы
1
Спасибо всем, Xpath рулит)
 

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