DragAndDropРебята, кто в c# шарит, подскажите, как это реализовать в коде. Я то увидел код, а как это в зенку всунуть. Могли бы то из спецов написать это в коде как вставить в зенку? Т.е. как-то так:
variable x = координаты x;
variable y = координаты y;
и далее движение с зажатой кнопкой
Буду очень благодарен и с почетом к Вашим знаниям.
//находим элемент, с которым будем работать
HtmlElement he = instance.ActiveTab.FindElementById("SIvCob");
//проверяем, существует ли элемент
if (he.IsVoid){
//если нет, то кубик уйдет по красной ветке с сообщением ниже
throw new Exception("Нет нужного элемента");
}
//перемнные для координат элемента
int x = Convert.ToInt32(he.GetAttribute("leftInTab"));
int y = Convert.ToInt32(he.GetAttribute("topInTab"));
//переменные ширины и высоты элемента
int width = Convert.ToInt32(he.GetAttribute("clientWidth"));
int height = Convert.ToInt32(he.GetAttribute("clientHeight"));
//зажимаем мышь в начальных координатах x-5:y+5 и перетаскиваем до конца элемента
instance.ActiveTab.FullEmulationMouseDragAndDrop(x - 5, y + 5, x + width + 1, y + 5);
//находим элемент, с которым будем работать
HtmlElement he = instance.ActiveTab.FindElementById("SIvCob");
//проверяем, существует ли элемент
if (he.IsVoid){
//если нет, то кубик уйдет по красной ветке с сообщением ниже
throw new Exception("Нет нужного элемента");
}
//перемнные для координат элемента
int x = Convert.ToInt32(he.GetAttribute("leftInTab"));
int y = Convert.ToInt32(he.GetAttribute("topInTab"));
//переменные ширины и высоты элемента
int width = Convert.ToInt32(he.GetAttribute("clientWidth"));
int height = Convert.ToInt32(he.GetAttribute("clientHeight"));
//двигаем мышку к началу элемента
instance.ActiveTab.FullEmulationMouseMove(x - 1, y + 5);
//делаем случайную пазу перед нажатием от 0,5 секунды до 1й
System.Threading.Thread.Sleep(Global.Classes.rnd.Next(500, 1000));
//зажимаем левую кнопку мыши
instance.ActiveTab.FullEmulationMouseClick("left", "down");
//двигаем мышь к концу элемента
instance.ActiveTab.FullEmulationMouseMove(x + width + 1, y + 5);
//делаем случайную пазу перед нажатием от 0,5 секунды до 1й
System.Threading.Thread.Sleep(Global.Classes.rnd.Next(500, 1000));
//отпускаем ЛКМ
instance.ActiveTab.FullEmulationMouseClick("left", "up");
Здесь есть метод решения: https://zennolab.com/discussion/threads/kaptcha-press-hold.93413/а как сделать клик по координатам и держать скажем 30 секунд потом отпустить
не сработал там ID постоянно меняется и не к чему закрепиться по этому клик по кординатам нуженЗдесь есть метод решения
не сработал там ID постоянно меняется и не к чему закрепиться по этому клик по координатам нужен
// мышь по координатам
instance.ActiveTab.FullEmulationMouseMove(500, 480);
// клик с зажатием 5сек
instance.ActiveTab.FullEmulationMouseClick("left", "down");
Thread.Sleep(5 * 1000);
instance.ActiveTab.FullEmulationMouseClick("left", "up");
привет ! а как сделать поиск по XPath ?DragAndDrop
MouseDown, MouseUpКод://находим элемент, с которым будем работать HtmlElement he = instance.ActiveTab.FindElementById("SIvCob"); //проверяем, существует ли элемент if (he.IsVoid){ //если нет, то кубик уйдет по красной ветке с сообщением ниже throw new Exception("Нет нужного элемента"); } //перемнные для координат элемента int x = Convert.ToInt32(he.GetAttribute("leftInTab")); int y = Convert.ToInt32(he.GetAttribute("topInTab")); //переменные ширины и высоты элемента int width = Convert.ToInt32(he.GetAttribute("clientWidth")); int height = Convert.ToInt32(he.GetAttribute("clientHeight")); //зажимаем мышь в начальных координатах x-5:y+5 и перетаскиваем до конца элемента instance.ActiveTab.FullEmulationMouseDragAndDrop(x - 5, y + 5, x + width + 1, y + 5);
Получить нужный элемент можно так:Код://находим элемент, с которым будем работать HtmlElement he = instance.ActiveTab.FindElementById("SIvCob"); //проверяем, существует ли элемент if (he.IsVoid){ //если нет, то кубик уйдет по красной ветке с сообщением ниже throw new Exception("Нет нужного элемента"); } //перемнные для координат элемента int x = Convert.ToInt32(he.GetAttribute("leftInTab")); int y = Convert.ToInt32(he.GetAttribute("topInTab")); //переменные ширины и высоты элемента int width = Convert.ToInt32(he.GetAttribute("clientWidth")); int height = Convert.ToInt32(he.GetAttribute("clientHeight")); //двигаем мышку к началу элемента instance.ActiveTab.FullEmulationMouseMove(x - 1, y + 5); //делаем случайную пазу перед нажатием от 0,5 секунды до 1й System.Threading.Thread.Sleep(Global.Classes.rnd.Next(500, 1000)); //зажимаем левую кнопку мыши instance.ActiveTab.FullEmulationMouseClick("left", "down"); //двигаем мышь к концу элемента instance.ActiveTab.FullEmulationMouseMove(x + width + 1, y + 5); //делаем случайную пазу перед нажатием от 0,5 секунды до 1й System.Threading.Thread.Sleep(Global.Classes.rnd.Next(500, 1000)); //отпускаем ЛКМ instance.ActiveTab.FullEmulationMouseClick("left", "up");
Посмотреть вложение 38787
Потом нужно вытянуть из скопированного в буфер кода вторую строчку:
Посмотреть вложение 38788
И заменить ею похожую в коде выше.
привет ! а как сделать поиск по XPath ?
HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByXPath("//div[@class='123456']", 0);
благодарюHtmlElement he = instance.ActiveTab.GetDocumentByAddress("0").FindElementByXPath("//div[@class='123456']", 0);