Нажать кнопку button в теге div, учитывая его стиль, среди нескольких подобных элементов

vovanchis

Пользователь
Регистрация
14.03.2017
Сообщения
41
Благодарностей
1
Баллы
8
Всем доброго времени суток.
Новичок пока при работе с Зенно. Но уже оценил его чудотворные свойства и сварганил шаблончик.
Теперь требуется ещё один шаблон. Мучаюсь и никак не могу найти решения уже несколько дней (в программировании не шарю, С# и Javascript не знаю, лишь немного PHP и более менее HTML, CSS).
Суть вопроса и проблемы:
На странице 10 элементов с картинками и надписями + КНОПКА.
Все элементы закованы в div, имеющий определенный класс, отличающийся и повторяющийся среди этих 10 элементов. То есть может быть несколько блоков элементов с div, внутри которых ещё несколько блоков со своими стилями, не пересекающимися с главным div.
Пример
<div class="1"...><div class="vjjfjfjf"><button class="knopka">Кнопка</button></div></div>
<div class="2"...><div class="vjjfjfjf"><button class="knopka">Кнопка</button></div></div>
<div class="3"...><div class="vjjfjfjf"><button class="knopka">Кнопка</button></div></div>

Нужно:
Нажать на кнопку из блока <div class="1"...> , при этом html код надо сохранить, так как передаются необходимые для обработки параметры.

Как сделать подскажите, покажите, или хотя бы намекните. Но лучше, конечно, более детально. Буду очень благодарен и признателен.

P.S. Как вариант пробовал найти по стилю главного div и установить в стиль тега <button> уникальный стиль с помощью innerhtml и потом по нему найти кликнуть кнопку. Но получается, что весь остальной ХМТЛ. А без всего кода ничего не работает. Ещё раз заранее большое спасибо.
 

lzlmrf

Client
Регистрация
14.08.2015
Сообщения
488
Благодарностей
149
Баллы
43

vovanchis

Пользователь
Регистрация
14.03.2017
Сообщения
41
Благодарностей
1
Баллы
8
Это немного помогло. Спасибо. Но лишь немного, т.к. C# я не знаю абсолютно. Как вариант, конечно, изучить С# )))
В общем, по той технологии, которая описана, работа кубика с кодом выдает значение переменной = ок.
Так и должно быть?
Как теперь кликнуть по кнопки именно в нужном блоке?
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Как теперь кликнуть по кнопки именно в нужном блоке?
Если Вы об этом
Некий элемент прячется очень глубоко, и выцепить его по id или любому одному атрибуту не представляется возможным. Парсить же html регулярками - ересь(подробнее расскажет гугл). Тут нам на помощь приходит XPath:
Код:
var Link = instance.ActiveTab.FindElementByXPath("//div[@class='menu']/ul/li[2]/a", 0);
Данный пример получает div c классом "menu", внутри него ищет список, берет 2 элемент, и ищет в нем ссылку.
По этой ссылке можно кликнуть: Link.Click();
Получить ее текст: Link.InnerHtml;
Изменить ее: Link.SetAttribute("href", "http://google.com");
Небольшое вступление в XPath можно прочитать тут: http://habrahabr.ru/post/114772/
то так
C#:
var Link = instance.ActiveTab.FindElementByXPath("//div[@class='menu']/ul/li[2]/a", 0);
Link.Click();
 

vovanchis

Пользователь
Регистрация
14.03.2017
Сообщения
41
Благодарностей
1
Баллы
8
Если Вы об этом

то так
C#:
var Link = instance.ActiveTab.FindElementByXPath("//div[@class='menu']/ul/li[2]/a", 0);
Link.Click();
Ничего не происходит. Вроде как всё ок отрабатывает. Пишет проект завершен, но по кнопке не кликает. Пробовал по ссылке - тоже.
 

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113
Без реальных примеров вам тут врядли получится помочь. Вы xpath на свой изменили в коде от @Dimionix ?
 

vovanchis

Пользователь
Регистрация
14.03.2017
Сообщения
41
Благодарностей
1
Баллы
8

Вложения

  • 47,4 КБ Просмотры: 784

vovanchis

Пользователь
Регистрация
14.03.2017
Сообщения
41
Благодарностей
1
Баллы
8
Никто не смогёт мне помочь, да? (
 

budora

Client
Регистрация
13.08.2012
Сообщения
831
Благодарностей
556
Баллы
93

LaGir

Client
Регистрация
01.10.2015
Сообщения
227
Благодарностей
927
Баллы
93
Файл с хтмлем прикладываю.
В зенно код выглядит вот так:
XPath на скрине явно неправильный.
Не уверен, что понял задачу, но если ориентироваться на выложенный html, див и кнопку можно найти следующим образом:
Код:
//Получаем первый див с классом "order order-type-usual order-level-1"
var div = instance.ActiveTab.FindElementByXPath("//div[@class='order order-type-usual order-level-1']",0);
//Получаем в переменную InnerHtml данного дива
string innerHtml = div.InnerHtml;
//Находим кнопку "Взять заказ" у этого дива
var button = div.FindChildByXPath(".//button[text()='Взять заказ']",0);
//Кликаем по кнопке
button.Click();
Правда, в том html 8 дивов с классом order order-type-usual order-level-1.
 

vovanchis

Пользователь
Регистрация
14.03.2017
Сообщения
41
Благодарностей
1
Баллы
8
XPath на скрине явно неправильный.
...
Правда, в том html 8 дивов с классом order order-type-usual order-level-1.
Супер. Заработала. Правда один момент пришлось поправить! Супер! Огромное спасибо всем.

Вам Dimionix и Zortexx выше уже ответили. Что ещё вы хотите услышать?
Я умею читать ;-)
 

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