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

vovanchis

Пользователь
Joined
Mar 14, 2017
Messages
42
Reaction score
1
Points
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
Joined
Aug 14, 2015
Messages
488
Reaction score
149
Points
43

vovanchis

Пользователь
Joined
Mar 14, 2017
Messages
42
Reaction score
1
Points
8
Это немного помогло. Спасибо. Но лишь немного, т.к. C# я не знаю абсолютно. Как вариант, конечно, изучить С# )))
В общем, по той технологии, которая описана, работа кубика с кодом выдает значение переменной = ок.
Так и должно быть?
Как теперь кликнуть по кнопки именно в нужном блоке?
 

Dimionix

Moderator
Joined
Apr 9, 2011
Messages
3,068
Reaction score
3,130
Points
113
Как теперь кликнуть по кнопки именно в нужном блоке?
Если Вы об этом
Некий элемент прячется очень глубоко, и выцепить его по id или любому одному атрибуту не представляется возможным. Парсить же html регулярками - ересь(подробнее расскажет гугл). Тут нам на помощь приходит XPath:
Code:
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

Пользователь
Joined
Mar 14, 2017
Messages
42
Reaction score
1
Points
8
Если Вы об этом

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

zortexx

Client
Joined
Sep 19, 2011
Messages
2,520
Reaction score
1,226
Points
113
Без реальных примеров вам тут врядли получится помочь. Вы xpath на свой изменили в коде от @Dimionix ?
 

vovanchis

Пользователь
Joined
Mar 14, 2017
Messages
42
Reaction score
1
Points
8

Attachments

  • 47.4 KB Views: 796

vovanchis

Пользователь
Joined
Mar 14, 2017
Messages
42
Reaction score
1
Points
8
Никто не смогёт мне помочь, да? (
 

budora

Client
Joined
Aug 13, 2012
Messages
831
Reaction score
557
Points
93
Никто не смогёт мне помочь, да? (
Вам Dimionix и Zortexx выше уже ответили. Что ещё вы хотите услышать?
 

LaGir

Client
Joined
Oct 1, 2015
Messages
230
Reaction score
948
Points
93
Файл с хтмлем прикладываю.
В зенно код выглядит вот так:
XPath на скрине явно неправильный.
Не уверен, что понял задачу, но если ориентироваться на выложенный html, див и кнопку можно найти следующим образом:
Code:
//Получаем первый див с классом "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

Пользователь
Joined
Mar 14, 2017
Messages
42
Reaction score
1
Points
8
XPath на скрине явно неправильный.
...
Правда, в том html 8 дивов с классом order order-type-usual order-level-1.
Супер. Заработала. Правда один момент пришлось поправить! Супер! Огромное спасибо всем.

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

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