Как с эмулировать выделение текста при помощи мыши

  • Автор темы Автор темы SlavenTyz
  • Дата начала Дата начала

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 188
Реакции
38
Баллы
48
Подскажите как можно с эмулировать выделение текста при помощи мыши ( нажать правую кнопку мыши и провести по заданному элементу или координатам)
 
Набросал такой код. Может кто-то по другому придумает.
Код:
Развернуть Свернуть Копировать
// Находим элемент
HtmlElement he = instance.ActiveTab.FindElementById("SIvCob");//ищем элемент по атрибутам
if (he.IsVoid) return -1;//если нет элемента возвращаем -1

instance.ActiveTab.FullEmulationMouseMove(Convert.ToInt32(he.GetAttribute("left")), Convert.ToInt32(he.GetAttribute("top")));//двигаем мышку к началу элемента, который хотим прочитать
instance.ActiveTab.FullEmulationMouseClick("left", "down");//событие (event) зажали левую кнопку мыши
instance.ActiveTab.FullEmulationMouseMoveAboveHtmlElement(he, 30);//проводим мышкой по элементу заданное количество символов (30)
instance.ActiveTab.FullEmulationMouseClick("left", "up");//отпускаем левую кнопку мыши
Еще один вариант, если нужно выделить ссылку или типо того. Сильно не вдумывался, но вот это выделяет.
Код:
Развернуть Свернуть Копировать
// Конструктор действий, тип RiseEvent
HtmlElement he = instance.ActiveTab.FindElementByAttribute("a", "href", "https://www.google.com/setprefs\\?sig=0_1oVP2Lx8_SoHtMORHyCd52FrVc0%3D&hl=uk&source=homepage&sa=X&ved=0ahUKEwjj48iW3qThAhWPpYsKHb3DC38Q2ZgBCAc", "regexp", 0);
if (he.IsVoid) return -1;

instance.ActiveTab.FullEmulationMouseMove(Convert.ToInt32(he.GetAttribute("left")) - 1, Convert.ToInt32(he.GetAttribute("top")) + 5);
System.Threading.Thread.Sleep(500);
instance.ActiveTab.FullEmulationMouseClick("left", "down");
instance.ActiveTab.FullEmulationMouseMove(Convert.ToInt32(he.GetAttribute("left")) + Convert.ToInt32(he.GetAttribute("width")) - 5, Convert.ToInt32(he.GetAttribute("top")) + 5);
instance.ActiveTab.FullEmulationMouseClick("left", "up");
google1.png
 
Последнее редактирование:
мышка просто пролетает и не выделяет ничего

C#:
Развернуть Свернуть Копировать
// Конструктор действий, тип RiseEvent
HtmlElement he = instance.ActiveTab.FindElementByXPath("//h1", 0);
if (he.IsVoid) return -1;

instance.ActiveTab.FullEmulationMouseMove(Convert.ToInt32(he.GetAttribute("left")) - 1, Convert.ToInt32(he.GetAttribute("top")) + 5);
System.Threading.Thread.Sleep(500);
instance.ActiveTab.FullEmulationMouseClick("left", "down");
instance.ActiveTab.FullEmulationMouseMove(Convert.ToInt32(he.GetAttribute("left")) + Convert.ToInt32(he.GetAttribute("width")) - 5, Convert.ToInt32(he.GetAttribute("top")) + 5);
instance.ActiveTab.FullEmulationMouseClick("left", "up");
 
мышка просто пролетает и не выделяет ничего

C#:
Развернуть Свернуть Копировать
// Конструктор действий, тип RiseEvent
HtmlElement he = instance.ActiveTab.FindElementByXPath("//h1", 0);
if (he.IsVoid) return -1;

instance.ActiveTab.FullEmulationMouseMove(Convert.ToInt32(he.GetAttribute("left")) - 1, Convert.ToInt32(he.GetAttribute("top")) + 5);
System.Threading.Thread.Sleep(500);
instance.ActiveTab.FullEmulationMouseClick("left", "down");
instance.ActiveTab.FullEmulationMouseMove(Convert.ToInt32(he.GetAttribute("left")) + Convert.ToInt32(he.GetAttribute("width")) - 5, Convert.ToInt32(he.GetAttribute("top")) + 5);
instance.ActiveTab.FullEmulationMouseClick("left", "up");
на хроме небось ? у хрома баг по этой теме. в багтрекере есть. под файрфокс работает
 

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