Поиск видимого элемента

andropovleva

Client
Регистрация
23.11.2019
Сообщения
580
Благодарностей
45
Баллы
28
К примеру есть такой элемент, но у него есть свой номер совпадения. На странице их может быть много, но мне нужно сделать клик именно по тому что сейчас находится в кадре, такое возможно сделать?

118683
 

Ахилес

Client
Read only
Регистрация
11.11.2020
Сообщения
956
Благодарностей
393
Баллы
63
конечно. у элемента есть координаты. вот их и надо сравнивать с положением окна.
 
  • Спасибо
Реакции: andropovleva

andropovleva

Client
Регистрация
23.11.2019
Сообщения
580
Благодарностей
45
Баллы
28

andropovleva

Client
Регистрация
23.11.2019
Сообщения
580
Благодарностей
45
Баллы
28

Ахилес

Client
Read only
Регистрация
11.11.2020
Сообщения
956
Благодарностей
393
Баллы
63

Кузнец

Client
Регистрация
20.12.2016
Сообщения
181
Благодарностей
32
Баллы
28
-1 попробуй
 
  • Спасибо
Реакции: andropovleva

andropovleva

Client
Регистрация
23.11.2019
Сообщения
580
Благодарностей
45
Баллы
28

Lulz

Client
Регистрация
29.12.2023
Сообщения
12
Благодарностей
2
Баллы
3
Поиск по Xpatch. Должно сработать
 

andropovleva

Client
Регистрация
23.11.2019
Сообщения
580
Благодарностей
45
Баллы
28
(//span[text()='Like'])[-1] так не работает
 

Lulz

Client
Регистрация
29.12.2023
Сообщения
12
Благодарностей
2
Баллы
3

andropovleva

Client
Регистрация
23.11.2019
Сообщения
580
Благодарностей
45
Баллы
28

Lulz

Client
Регистрация
29.12.2023
Сообщения
12
Благодарностей
2
Баллы
3
Вы говорите, что у Вас на странице есть несколько таких элементов. Допустим отчет начинается с 0. То бишь третий элемент будет иметь индекс 2. Откуда Вы берете -1?.. Понимаю, что посоветовали, но возможно речь шла о форме документ на первом скрине, а не об индексе xpatch....
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 994
Благодарностей
787
Баллы
113
вот так можно сделать, если нужен элемент, который в окне браузера виден

C#:
HtmlElement myel = instance.ActiveTab.FindElementsByAttribute("span", "innertext", "Like","regexp").Where(x=>x.DisplacementInTabWindow.Y>0&&x.DisplacementInTabWindow.Y<project.Profile.ScreenSizeHeight).FirstOrDefault();
 
  • Спасибо
Реакции: doc и andropovleva

specialist

Client
Регистрация
28.12.2018
Сообщения
732
Благодарностей
343
Баллы
63
xpath знает о видимости элементов на странице, но не о текущем размере окна браузера и попадает ли элемент в его область показа.

По xpath возможно получение по косвенным признакам, если приложение устанавливает какие-то классы для таких элементов.

Для решения задачи нужно использовать javascript, вам нужно получить размер экрана и позицию элемента в окне, после сравнить, попадает ли элемент в видимую часть.
 
  • Спасибо
Реакции: andropovleva

andropovleva

Client
Регистрация
23.11.2019
Сообщения
580
Благодарностей
45
Баллы
28
Вы говорите, что у Вас на странице есть несколько таких элементов. Допустим отчет начинается с 0. То бишь третий элемент будет иметь индекс 2. Откуда Вы берете -1?.. Понимаю, что посоветовали, но возможно речь шла о форме документ на первом скрине, а не об индексе xpatch....
форма и так с -1 стоит
 

andropovleva

Client
Регистрация
23.11.2019
Сообщения
580
Благодарностей
45
Баллы
28
вот так можно сделать, если нужен элемент, который в окне браузера виден

C#:
HtmlElement myel = instance.ActiveTab.FindElementsByAttribute("span", "innertext", "Like","regexp").Where(x=>x.DisplacementInTabWindow.Y>0&&x.DisplacementInTabWindow.Y<project.Profile.ScreenSizeHeight).FirstOrDefault();
выполняется, но лайк не прожимается
 

Ахилес

Client
Read only
Регистрация
11.11.2020
Сообщения
956
Благодарностей
393
Баллы
63
  • Спасибо
Реакции: andropovleva

andropovleva

Client
Регистрация
23.11.2019
Сообщения
580
Благодарностей
45
Баллы
28

andropovleva

Client
Регистрация
23.11.2019
Сообщения
580
Благодарностей
45
Баллы
28

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