Как скролить у конкретного элемента на C#?

Nekro

Client
Регистрация
01.08.2020
Сообщения
223
Благодарностей
22
Баллы
18
Здравствуйте.

Скролю всю страницу так:
C#:
instance.ActiveTab.FullEmulationMouseWheel(0,1000);
Как задействовать скролл у определённого элемента? Например, найдя его по xpath.
 

zarufakis

Client
Регистрация
22.03.2019
Сообщения
1 522
Благодарностей
881
Баллы
113
Как задействовать скролл у определённого элемента? Например, найдя его по xpath.
Найти элемент, придвинуть к нему мышкой и скрольнуть

C#:
// Поиск элемента по XPath
//Путь XPath до элемента
string xpath = "//img[@class='logo']";
//Номер совпадения
int num = 0;

//Поиск элемента
var el = instance.ActiveTab.FindElementByXPath(xpath, num);
//Движение к элементу
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(el);
 
  • Спасибо
Реакции: Nekro

Nekro

Client
Регистрация
01.08.2020
Сообщения
223
Благодарностей
22
Баллы
18
Найти элемент, придвинуть к нему мышкой и скрольнуть
Попробовал. Я что-то не то делаю наверное. Выполняю код и ничего не происходит. Скролл необходим на Popup в фейсбуке:
64157


Я пробовал делать через focus, пробовал ommouseover + скролл на C# - не работает. Пробовал скролл через эмуляцию клавиши END. Так же не работает. А в данном случае просто ничего не происходит:

C#:
// Поиск элемента по XPath
//Путь XPath до элемента
string xpath = "//div[@aria-label='Прокручиваемая область']";
//Номер совпадения
int num = 0;

//Поиск элемента
var el = instance.ActiveTab.FindElementByXPath(xpath, num);
//Движение к элементу
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(el);
instance.ActiveTab.FullEmulationMouseWheel(0,1000);
Для примера страница https://www.facebook.com/pg/thehosicocat/posts/ в новом дизайне.
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 941
Благодарностей
4 333
Баллы
113
Нужно добавить все эти элементы списка в коллекцию HTML элементов, взять последний и без всякой эмуляции выполнить he.ScrollIntoView();
 
  • Спасибо
Реакции: Redsmokky

zarufakis

Client
Регистрация
22.03.2019
Сообщения
1 522
Благодарностей
881
Баллы
113

Nekro

Client
Регистрация
01.08.2020
Сообщения
223
Благодарностей
22
Баллы
18
По моему, вот этот div, где происходит скрол.

Посмотреть вложение 64172

Моу конечно и ошибаться
Выше элемент, который я выбираю имеет overscroll-behavior: contain. Возможно и не он будет скролиться. В этой верстке фейсбука сложно разобраться. У вас на скриншоте только страница. У меня же Popup где собраны все пользователи, которые поставили лайк записи. Я конечно попробовал и так же эффекта никакого.


Нужно добавить все эти элементы списка в коллекцию HTML элементов, взять последний и без всякой эмуляции выполнить he.ScrollIntoView();
Так они же скрыты там если не проскролить. Я поэтому и хочу понять как сделать скролл в нужном месте. Или я не понимаю чего?

Что значит коллекция? Я понял так, что их можно спарсить и выбрать последний. Потом применить he.ScrollIntoView();
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 941
Благодарностей
4 333
Баллы
113
  • Спасибо
Реакции: Nekro

Nekro

Client
Регистрация
01.08.2020
Сообщения
223
Благодарностей
22
Баллы
18
Нужно выбрать последний из доступных и применить указанный выше метод.
Попробовал на другом, статичном элементе. Отработало как надо. НО! Работает только если нужный элемент находится выше по коду. Если находится ниже - то не скролит, а курсор остаётся на краю видимой части экрана. Почему так?

В Popup окне не хочет работать совсем. Однако по непонятной мне причине у меня получилось решить свою задачу с полной эмуляцией мыши+относительный поиск элемента. Скролл автоматический получается как надо. А пока он скроллит до ближайшего элемента - появляются остальные кнопки.
До:
//div[contains(@style,'opacity: 1')][not(contains(@class,'hidden_elem'))]//div[@class='uiScrollableAreaContent']//li//div//span//div[@class='FriendButton']/button[contains(@class,'addButton')]
После:
//div[contains(@style,'opacity: 1')][not(contains(@class,'hidden_elem'))]//div[@class='uiScrollableAreaContent']//li//div//span//div[@class='FriendButton']//button[contains(@class,'addButton')]
 
Последнее редактирование:
  • Спасибо
Реакции: Astraport

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