Как кликнуть по кнопке находящейся внутри конкретного div'а?

WebBot

Client
Регистрация
04.04.2015
Сообщения
1 763
Благодарностей
1 391
Баллы
113
Всем привет. Есть страница сайта, где есть примерно следующая структура

<div data-object-id="12356">
<button>Add</button>
</div>

<div data-object-id="53453">
<button>Add</button>
</div>

<div data-object-id="23534">
<button>Add</button>
</div>

......

После того как я ранее определил нужный мне id объекта, нужно кликнуть по кнопке в его карточке... Но у самой кнопки нет никаких уникальных аттрибутов! Как бы "объяснить" зенке, что нужно кликнуть именно по кнопке находящейся внутри div'а с конкретным data-object-id ???
 

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113
Найдите координаты дива, его высоту и ширину. Это позволит вычислить координаты его центральной точки. По ней и кликайте.
 

LightWood

Moderator
Регистрация
04.11.2010
Сообщения
2 382
Благодарностей
916
Баллы
113
Вообще есть решения через xpath по уму сделать.
Если по деревянному, то я бы кликов по координатам избегал, темболее если не в видимой части инстанса находится кнопка клик вроде нормально не пройдет, можно инстанс развернуть пошире конечно. Но лучше думаювсе же работать с эллементами а не координатами, для этого:
1. парсите со страницы все части элемента такого вида <div data-object-id="23534"> и склдаываете их в список
2. дале счетчиком перебираете все строки из этого списка и поочередно сравниваете строку из списка со строкой с нужным айди
3. когда совпало, значение счетчика и будет вашим порядковым номером эллемента на странице по признаку.
4. спокойно кликаете на кнопку

Топорное решение, но работать будет стабильно.
По мере надобности список следом можете очистить.
 

CSS

Client
Регистрация
22.05.2010
Сообщения
1 327
Благодарностей
663
Баллы
113
Как выше уже описали - xpath и нет проблем, если же вы предпочитаете деревянные решения то могу вам предложить такой подход:
  1. Заранее смотрим как выглядит кнопка, например вот так как вы описали
  2. Ищем нужый div по признаку (по id к приемру), и делаем set|innerhtml, и туда вставляем нашу кнопку, только приписав туда заранее признак поиска, например
    <button id="woooow">Add</button>
  3. Ищем нашу кнопку по признаку который мы создали, то есть id="woooow" и делаем с ней что хотим, кликаем например
 

LightWood

Moderator
Регистрация
04.11.2010
Сообщения
2 382
Благодарностей
916
Баллы
113
так тоже сработает, но думаю тс не поймет объяснение. тут с картинками надо.
Понимание присвоения не существующих атрибутов для эллементов, как правило у народа отсутствует.
 

WebBot

Client
Регистрация
04.04.2015
Сообщения
1 763
Благодарностей
1 391
Баллы
113
так тоже сработает, но думаю тс не поймет объяснение. тут с картинками надо.
Понимание присвоения не существующих атрибутов для эллементов, как правило у народа отсутствует.
С пониманием все ok ;-) Деревянное решение предложенное CSS мне уже приходило в голову, просто руки не дошли до реализации т.к думал что в ZP есть более элегантный способ о котором я просто не знаю. Оказалось действительно есть - xpath. Его и буду юзать.

Камрады, всем спасибо за ответы!
 

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