При кликанье по элементу перехода на вкладку нет

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

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 173
Реакции
37
Баллы
48
На видео ( ссылка на облако https://cloud.mail.ru/public/egXB/VKbhvac5q ) подробнее показал как наводится мышка на элемент и делает клик, но переход иногда есть, а иногда нет. Наверное фаза луны влияет. Использую 2 вида эмуляции мышки
1)
Tab1.FullEmulationMouseMoveToHtmlElement(htmMain);
Tab1.FullEmulationMouseClick("left", "click");

2) По рандомным координатам
int baseLeft = Convert.ToInt32(htmMain.GetAttribute("leftInTab"));
int baseTop = Convert.ToInt32(htmMain.GetAttribute("topInTab"));
int width = Convert.ToInt32(htmMain.GetAttribute("width"));
int height = Convert.ToInt32(htmMain.GetAttribute("height"));



// Генерируем случайное смещение внутри элемента
Random rnd = new Random();
// Добавляем небольшое смещение, чтобы не всегда кликать в самый угол
int offsetX = rnd.Next(5, width - 5);
int offsetY = rnd.Next(5, height - 5);

int clickX = baseLeft + offsetX;
int clickY = baseTop + offsetY;

// Выполняем клик по рассчитанным координатам
// Используйте MouseClick, если нужна полная эмуляция мыши
instance.ActiveTab.MouseClick(clickX, clickY, "left", "click");
 
На видео ( ссылка на облако https://cloud.mail.ru/public/egXB/VKbhvac5q ) подробнее показал как наводится мышка на элемент и делает клик, но переход иногда есть, а иногда нет. Наверное фаза луны влияет. Использую 2 вида эмуляции мышки
1)
Tab1.FullEmulationMouseMoveToHtmlElement(htmMain);
Tab1.FullEmulationMouseClick("left", "click");

2) По рандомным координатам
int baseLeft = Convert.ToInt32(htmMain.GetAttribute("leftInTab"));
int baseTop = Convert.ToInt32(htmMain.GetAttribute("topInTab"));
int width = Convert.ToInt32(htmMain.GetAttribute("width"));
int height = Convert.ToInt32(htmMain.GetAttribute("height"));



// Генерируем случайное смещение внутри элемента
Random rnd = new Random();
// Добавляем небольшое смещение, чтобы не всегда кликать в самый угол
int offsetX = rnd.Next(5, width - 5);
int offsetY = rnd.Next(5, height - 5);

int clickX = baseLeft + offsetX;
int clickY = baseTop + offsetY;

// Выполняем клик по рассчитанным координатам
// Используйте MouseClick, если нужна полная эмуляция мыши
instance.ActiveTab.MouseClick(clickX, clickY, "left", "click");

Здравствуйте,

По видео видно, что у вас клик происходит не по элементу. Скорей всего вы написали неверный xPath, поэтому клик не попадает по нужному элементу.

Я бы вам рекомендовал использовать этот метод, но с другим xPath


C#:
Развернуть Свернуть Копировать
Tab1.FullEmulationMouseMoveToHtmlElement(htmMain);
Tab1.FullEmulationMouseClick("left", "click");
 
Здравствуйте,

По видео видно, что у вас клик происходит не по элементу. Скорей всего вы написали неверный xPath, поэтому клик не попадает по нужному элементу.

Я бы вам рекомендовал использовать этот метод, но с другим xPath


C#:
Развернуть Свернуть Копировать
Tab1.FullEmulationMouseMoveToHtmlElement(htmMain);
Tab1.FullEmulationMouseClick("left", "click");

1) Элемент индифицировал верно
140414


2) Я специально использовал разные варианты клика, что бы на верника
 
1) Элемент индифицировал верно
Посмотреть вложение 140414


2) Я специально использовал разные варианты клика, что бы на верника
1) Ну по видео как выше писали, анимация как бы наводит мимо кнопки
2) Видно что фокус слетел с окна браузер, в этом случае могут не проходить клики (Такое бывает только в ПМ), давно такого не замечал, может уже пофиксили, но давненько было такое.
3) Пару раз встречались сайты, которые не реагировали на FullEmulationMouseClick("left", "click"), видимо изза минимальной задержки между Down и Up евентом. Попробуй такое
C#:
Развернуть Свернуть Копировать
Random rand = new Random();

instance.ActiveTab.FullEmulationMouseClick("left", "down");
Thread.Sleep(rand.Next(70, 120));
instance.ActiveTab.FullEmulationMouseClick("left", "up");
 
1) Ну по видео как выше писали, анимация как бы наводит мимо кнопки
2) Видно что фокус слетел с окна браузер, в этом случае могут не проходить клики (Такое бывает только в ПМ), давно такого не замечал, может уже пофиксили, но давненько было такое.
3) Пару раз встречались сайты, которые не реагировали на FullEmulationMouseClick("left", "click"), видимо изза минимальной задержки между Down и Up евентом. Попробуй такое
C#:
Развернуть Свернуть Копировать
Random rand = new Random();

instance.ActiveTab.FullEmulationMouseClick("left", "down");
Thread.Sleep(rand.Next(70, 120));
instance.ActiveTab.FullEmulationMouseClick("left", "up");
Попробовал не помогло
 
Вообще не понял зачем прописывать путь которого нет на странице
Извиняюсь, не заметил. Скрипты сайта изменили XPath, поэтому он стал неверным.

Вот нормальный:
C#:
Развернуть Свернуть Копировать
//span[contains(@class, 'item active')]
 
Сейчас всплыл другой сайт, при этом в ProjectMaker гоняю проекты все хорошо клики отрабатывают (данный проект выбирает вариант ответа при помощи клика). Но как только проект запускаю в ZennoPoster то ни каких кликов нет, то есть НЕ выбираются нужный вариант ответа. Такое ощущение, что кликов в ZennoPoster просто нет
 
Сейчас всплыл другой сайт, при этом в ProjectMaker гоняю проекты все хорошо клики отрабатывают (данный проект выбирает вариант ответа при помощи клика). Но как только проект запускаю в ZennoPoster то ни каких кликов нет, то есть НЕ выбираются нужный вариант ответа. Такое ощущение, что кликов в ZennoPoster просто нет

Попробуйте добавить в ваш код логику проверки наличия нужного элемента, если элемент не найден, то выведите в лог все данные //body (xPath) и посмотрите, что на самом деле видит ZP.
 
Сейчас всплыл другой сайт, при этом в ProjectMaker гоняю проекты все хорошо клики отрабатывают (данный проект выбирает вариант ответа при помощи клика). Но как только проект запускаю в ZennoPoster то ни каких кликов нет, то есть НЕ выбираются нужный вариант ответа. Такое ощущение, что кликов в ZennoPoster просто нет
Попробуй instance.EmulationLevel = "SuperEmulation"; если не включена
 
  • Спасибо
Реакции: Dmitriy_Zenno
Попробуйте добавить в ваш код логику проверки наличия нужного элемента, если элемент не найден, то выведите в лог все данные //body (xPath) и посмотрите, что на самом деле видит ZP.
Основная сложность в том, что у вас в функциях не корректно отрабатывают данные. Например

Tab Tab1=instance.ActiveTab;
Tab1.FullEmulationMouseMoveToHtmlElement(htmMain);
Tab1.FullEmulationMouseClick("left", "click");

Промотка не отрабатывает, пришлось использовать этот код, что бы промотка отработала
htmMain.ScrollIntoView(); // Прокрутит страницу прямо к элементу

Я уверен, что с кликами такая же фигня, только это доказать не могу, а вот для промотке есть сайт на котором промотка не отрабатывает
 
Основная сложность в том, что у вас в функциях не корректно отрабатывают данные. Например

Tab Tab1=instance.ActiveTab;
Tab1.FullEmulationMouseMoveToHtmlElement(htmMain);
Tab1.FullEmulationMouseClick("left", "click");

Промотка не отрабатывает, пришлось использовать этот код, что бы промотка отработала
htmMain.ScrollIntoView(); // Прокрутит страницу прямо к элементу

Я уверен, что с кликами такая же фигня, только это доказать не могу, а вот для промотке есть сайт на котором промотка не отрабатывает

Метод Tab1.FullEmulationMouseMoveToHtmlElement(htmMain); - не предназначен для скролла, он наводит мышку на элемент.
Для скролла используйте метод tab.FullEmulationMouseWheel(100,100);
 
Метод Tab1.FullEmulationMouseMoveToHtmlElement(htmMain); - не предназначен для скролла, он наводит мышку на элемент.
Для скролла используйте метод tab.FullEmulationMouseWheel(100,100);
Но у у меня в некоторых проектах данная функция Tab1.FullEmulationMouseMoveToHtmlElement(htmMain); перематывала страницу вниз
 
Но у у меня в некоторых проектах данная функция Tab1.FullEmulationMouseMoveToHtmlElement(htmMain); перематывала страницу вниз

Если элемент отсутствует на экране, но присутствует в DOM, то мышка на него наводится и получается эффект скролла, но не через колесо, а за счёт самого наведения. Проблема в том, что если элемент находится вне видимой области экрана, он может быть скрыт через JavaScript. В таком случае мышь «не видит» его и не может на него навестись.
 

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