Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Каким образом можно настроить исключение, чтобы не кликало на рекламу. Просто иногда когда по хпатч присходит клик скрипт отрабатывает и может кликнуть рекламу. а этого нам не надо
Куда это можно тут прописать чтобы заработало не могу понять
C#:
//Если при чтении не переходили на другую страницу
if (isLinkClicked == false)
{
//Находим все элементы, содержащие ссылки
var colLinks = tab.FindElementsByXPath("//a");
//Вычленяем только видимые на странице ссылки
colResult = tab.FindElementsByXPath("//sngvuyrbuy");
if (colLinks.Count>0)
{
foreach (var el in colLinks.Elements)
{
int topInBrowser = int.Parse(el.GetAttribute("topInBrowser"));
int leftInBrowser = int.Parse(el.GetAttribute("leftInBrowser"));
if (el.Height>0 && el.Width>0 && topInBrowser>=0 && leftInBrowser>=0)
{
colResult.Add(el);
}
}
}
colLinks = colResult;
//Проверка наличия ссылок
if (colLinks.Count<1)
{
project.SendWarningToLog("Видимых ссылок на странице не найдено! "+tab.URL, true);
project.SendInfoToLog("Завершили гуляние по страницам. Количество прочитанных страниц: "+(p+1), true);
return "ok";
}
//Ведём мышку к случайному элементу со ссылкой
var elLink = colLinks.Elements[rnd.Next(colLinks.Elements.Length)];
tab.FullEmulationMouseMoveToHtmlElement(elLink);
Thread.Sleep(rnd.Next(4,8)*1000);
tab.FullEmulationMouseClick("left", "click");
if (tab.IsBusy) tab.WaitDownloading();
Thread.Sleep(rnd.Next(time_min, time_max)*1000);
}
зачем один и тот же вопрос в разных темах дублировать ?
вам же уже ответили, уменьшаете уровень эмуляции в проекте или в конкретном кубике. при высоком уровне эмуляции крыса всегда будет кликать только по видимому элементу, а если элемент внизу то будет автоматический скрол.
и еще вот я написал, если вдруг пропустили
а еще я расчехлил свой хрустальный шар для вангования и мне было видение (а куда деваться если информации ноль).
а не эту ли проблему вы нам щас описываете так подробно и красочно аж в двух темах ?
//ищем наш элдемент по XPath:
HtmlElement Elemetik = instance.ActiveTab.FindElementByXPath("//p", 0);
//его координаты подставляем в наши координаты первой точки в массиве
int x = Elemetik.DisplacementInTabWindow.X;
int y = Elemetik.DisplacementInTabWindow.Y;
Random rnd = new Random();
// указываем количество точек
int Kolichestvo_Tochek = 33;
// обьявляем массив точек, по которым будет двигаться курсор мыши
Point[] points = new Point[Kolichestvo_Tochek];
// в цикле заполняем наш масив
for (int i = 0; i<Kolichestvo_Tochek; i++)
{
// если координаты выходят за пределы страницы (минусовые), то водим не доходя до края (меняем на "чуть плюсовые").
if (x < 0) {
x = rnd.Next(0,5);
}
if (y < 0) {
y = rnd.Next(0,5);
}
points[i] = new Point(x, y);
project.SendInfoToLog(x.ToString() + " , " + y.ToString(), false); // выводим в лог координаты
// указываем рандомные пределы для сдвига курсора в пикселях для следующего круга цикла:
x += rnd.Next(-64,64);
y += rnd.Next(-64,64);
}
// в цикле двигаем курсором между точками, но обрабатываем массив координат уже с конца:
for (int i = Kolichestvo_Tochek-1; i>=0; i--)
{
//задаем рандомно скорость движения для каждого рывка:
instance.ActiveTab.FullEmulationMouseSetOptions(rnd.Next(4,7),rnd.Next(4,7),rnd.Next(2,5));
//Двигаем мышкой плавно:
instance.ActiveTab.FullEmulationMouseMove(points.ElementAt(i).X, points.ElementAt(i).Y);
}
//на всякий пожарный подводим к елементу курсор более рандомно, а то оно только к его крайней левой точке по координатам подводит:
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(Elemetik);
// и кликаем в этом месте:
instance.ActiveTab.FullEmulationMouseClick("left", "click");
Добрый день. Есть вот такой код (код ниже, код взят из вашего примера). Он введет мышку до определенного текста на странице. Мне нужно как то в этом коде сделать паузы рандомные (в пределах например от 1 от 2 секунд) между каждым движением мыши ( при переходе между точками ). Чтобы например получалось чтобы мышка доходила до нужного текста за 40-50 секунд например. Нашел у вас вот такую строчку в другом посте
//Делаем случайную паузу от 0,5 до 3 секунд
Thread.Sleep(rnd.Next(4,30) * 100);
Но не знаю как ее вставить в код.
И еще такой вопрос ,почему то когда мышка ведется к тексту часто бывает что она проходит намного ниже нужного текста , потом возвращается наверх , а потом только спускается к нужному тексту и там останавливается, а хотелось бы чтобы она только до текста спускалась.
//ищем наш элдемент по XPath:
HtmlElement Elemetik = instance.ActiveTab.FindElementByXPath("//span[contains(text(), 'Текст')]", 0);
//его координаты подставляем в наши координаты первой точки в массиве
int x = Elemetik.DisplacementInTabWindow.X;
int y = Elemetik.DisplacementInTabWindow.Y;
Random rnd = new Random();
// указываем количество точек
int Kolichestvo_Tochek = 20;
// обьявляем массив точек, по которым будет двигаться курсор мыши
Point[] points = new Point[Kolichestvo_Tochek];
// в цикле заполняем наш масив
for (int i = 0; i<Kolichestvo_Tochek; i++)
{
// если координаты выходят за пределы страницы (минусовые), то водим не доходя до края (меняем на "чуть плюсовые").
if (x < 0) {
x = rnd.Next(0,5);
}
if (y < 0) {
y = rnd.Next(0,5);
}
points = new Point(x, y);
project.SendInfoToLog(x.ToString() + " , " + y.ToString(), false); // выводим в лог координаты
// указываем рандомные пределы для сдвига курсора в пикселях для следующего круга цикла:
x += rnd.Next(-150,150);
y += rnd.Next(-500,500);
}
// в цикле двигаем курсором между точками, но обрабатываем массив координат уже с конца:
for (int i = Kolichestvo_Tochek-1; i>=0; i--)
{
//задаем рандомно скорость движения для каждого рывка:
instance.ActiveTab.FullEmulationMouseSetOptions(rnd.Next(4,7),rnd.Next(4,7),rnd.Next(2,5));
//Двигаем мышкой плавно:
instance.ActiveTab.FullEmulationMouseMove(points.ElementAt(i).X, points.ElementAt(i).Y);
}
//на всякий пожарный подводим к елементу курсор более рандомно, а то оно только к его крайней левой точке по координатам подводит:
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(Elemetik);
// и кликаем в этом месте:
Добрый день. Есть вот такой код (код ниже, код взят из вашего примера). Он введет мышку до определенного текста на странице. Мне нужно как то в этом коде сделать паузы рандомные (в пределах например от 1 от 2 секунд) между каждым движением мыши ( при переходе между точками ). Чтобы например получалось чтобы мышка доходила до нужного текста за 40-50 секунд например. Нашел у вас вот такую строчку в другом посте
//Делаем случайную паузу от 0,5 до 3 секунд
Thread.Sleep(rnd.Next(4,30) * 100);
Но не знаю как ее вставить в код.
И еще такой вопрос ,почему то когда мышка ведется к тексту часто бывает что она проходит намного ниже нужного текста , потом возвращается наверх , а потом только спускается к нужному тексту и там останавливается, а хотелось бы чтобы она только до текста спускалась.
Увеличьте количество точек («Kolichestvo_Tochek»), и/или поиграйтесь с параметром пауз в «instance.ActiveTab.FullEmulationMouseSetOptions» (увеличьте «4,7» до «500,3000»).
А за лишние манипуляции с мышкой: я не особо спец в этой теме, но это вроде такая особенность (косяк) зенки, - при приближении курсора к краю она скролит страницу. Где-то был недавно топик об этом, может исправят, или фиксить как-то в коде (лучше ограничивая наведение курсора к краям).
UPD: нашел тот топик: Некорректное поведение мыши при включенной фул эмулятион в настройках проекта
Не ругайте сильно,
1. как скорость движения мышки увеличить в ZP 7, не теряя качества исполнения? Там просто полная эмуляция, но скорость движения не понимаю как увеличить? Она как обкуренная медленно так ходит.
2. И как в последних версиях просто поводить мышкой по экрану с полной эмуляцией
работает до первого сбоя в браузере. а они очень часто происходят.
вот так правильно
C#:
if ((instance.ActiveTab.IsVoid) || (instance.ActiveTab.IsNull)) throw new Exception("Не найдено вкладки");
HtmlElement he = instance.ActiveTab.FindElementByAttribute("a", "href", (project.Variables["site"].Value), "regexp", 0);//находим элемент по УРЛу
if (he.IsVoid) throw new Exception("Не найдено и т.д."); // их всегда надо проверять
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(he);//двигаем мышку к нему
System.Threading.Thread.Sleep(500);//ждем пол секунды перед нажатием
instance.ActiveTab.FullEmulationMouseClick("left", "click");//ЛКМ по ссылке
if ((instance.ActiveTab.IsVoid) || (instance.ActiveTab.IsNull)) throw new Exception("Не найдено вкладки");
HtmlElement he = instance.ActiveTab.FindElementByAttribute("div", "id", project.Variables["Yandex_uniq"].Value, "text", 0);
//HtmlElement he = instance.ActiveTab.FindElementByAttribute("a", "href", (project.Variables["Site"].Value), "regexp", 0);//находим элемент по УРЛу
if (he.IsVoid) throw new Exception("Не найдено и т.д."); // их всегда надо проверять
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(he);//двигаем мышку к нему
System.Threading.Thread.Sleep(500);//ждем пол секунды перед нажатием
instance.ActiveTab.FullEmulationMouseClick("left", "click");//ЛКМ по ссылке
Получается
Удаляю рся yabs.yandex.ru, директ и яндекс услуги. и клик получается прямо в тайл, осталось мышка чтобы немного быстрее подводила, люди так не ведут медленно
Добрый день. Есть вот такой код (код ниже, код взят из вашего примера). Он введет мышку до определенного текста на странице. Мне нужно как то в этом коде сделать паузы рандомные (в пределах например от 1 от 2 секунд) между каждым движением мыши ( при переходе между точками ). Чтобы например получалось чтобы мышка доходила до нужного текста за 40-50 секунд например. Нашел у вас вот такую строчку в другом посте
//Делаем случайную паузу от 0,5 до 3 секунд
Thread.Sleep(rnd.Next(4,30) * 100);
Но не знаю как ее вставить в код.
И еще такой вопрос ,почему то когда мышка ведется к тексту часто бывает что она проходит намного ниже нужного текста , потом возвращается наверх , а потом только спускается к нужному тексту и там останавливается, а хотелось бы чтобы она только до текста спускалась.
//ищем наш элдемент по XPath:
HtmlElement Elemetik = instance.ActiveTab.FindElementByXPath("//span[contains(text(), 'Текст')]", 0);
//его координаты подставляем в наши координаты первой точки в массиве
int x = Elemetik.DisplacementInTabWindow.X;
int y = Elemetik.DisplacementInTabWindow.Y;
Random rnd = new Random();
// указываем количество точек
int Kolichestvo_Tochek = 20;
// обьявляем массив точек, по которым будет двигаться курсор мыши
Point[] points = new Point[Kolichestvo_Tochek];
// в цикле заполняем наш масив
for (int i = 0; i<Kolichestvo_Tochek; i++)
{
// если координаты выходят за пределы страницы (минусовые), то водим не доходя до края (меняем на "чуть плюсовые").
if (x < 0) {
x = rnd.Next(0,5);
}
if (y < 0) {
y = rnd.Next(0,5);
}
points = new Point(x, y);
project.SendInfoToLog(x.ToString() + " , " + y.ToString(), false); // выводим в лог координаты
// указываем рандомные пределы для сдвига курсора в пикселях для следующего круга цикла:
x += rnd.Next(-150,150);
y += rnd.Next(-500,500);
}
// в цикле двигаем курсором между точками, но обрабатываем массив координат уже с конца:
for (int i = Kolichestvo_Tochek-1; i>=0; i--)
{
//задаем рандомно скорость движения для каждого рывка:
instance.ActiveTab.FullEmulationMouseSetOptions(rnd.Next(4,7),rnd.Next(4,7),rnd.Next(2,5));
//Двигаем мышкой плавно:
instance.ActiveTab.FullEmulationMouseMove(points.ElementAt(i).X, points.ElementAt(i).Y);
}
//на всякий пожарный подводим к елементу курсор более рандомно, а то оно только к его крайней левой точке по координатам подводит:
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(Elemetik);
// и кликаем в этом месте:
Тут спорное решение. Потому что
1. Ехать по своим точкам функцией которая и так уже эмулирует "естественное" движение - это избыточность
2. Вызов функции FullEmulationMouseMove - довольно медленное занятие и скорее всего очень медленно мышка будет ездить, спотыкаясь на каждой точке
3. "Тряска" при движении и так уже реализована. Смотрите вебвизор на разных настройках движение мышки.
4. Так же лучше посмотреть вебвизор и проанализировать траектории. Дело вообще не в "тряске" чаще всего
5. Рикошет координат мышки от края экрана - в последней версии зенки там переделан механизм эмуляции. И ручная корректировка координат при движении - чаще всего только больше лишних дерганий и глюков добавляет.
Как в сниппет вставить?
Такой код
//div[@id='uniq1590143420870312884' and contains(@class, 'organic__url-text')]
Клин хороший получился, осталось мышку подвести
C#:
var rnd = new Random();
var tab = instance.ActiveTab;
//Ищем элемент
var div = tab.FindElementByAttribute("div", "id", project.Variables["Yandex_Uniq"].Value, "text", 0);
//Наводим на него мышку
tab.FullEmulationMouseMoveToHtmlElement(div);
Не дает редактировать предыдущий пост. Так правильно var div = tab.FindElementByXPath("//div[@id='uniq1590143420870312884' and contains(@class, 'organic__url-text')]", 0);
И сразу ответ, в зено хроме встроен инструмент для разработчиков.
там просто нажимаешь ctl+F и тестируешь свои Xpath как и в расширении.
И не надо мучаться
И сразу ответ, в зено хроме встроен инструмент для разработчиков.
там просто нажимаешь ctl+F и тестируешь свои Xpath как и в расширении.
И не надо мучаться
Проблема в том что я хз как пользоваться
Подробно не написано, хоть бы статья вышла.
Как вставить переменную?
var rnd = new Random();
var tab = instance.ActiveTab;
//Ищем элемент
var div = tab.FindElementByXPath("//div[@id='project.Variables["Yandex_Uniq"].Value"and contains(@class, 'organic__url-text')]", 0);//Наводим на него мышку
tab.FullEmulationMouseMoveToHtmlElement(div);
а зачем лезть в c# не понимая там ничего ? есть же стандартный кубик, забил туда xpath и он кликает. всего навсего надо изучить составление xpath. ну этого добра в инете навалом. да и тут на форуме в конкурсных статьях полно написано и про xpath и про навигацию бота на странице.
а зачем лезть в c# не понимая там ничего ? есть же стандартный кубик, забил туда xpath и он кликает. всего навсего надо изучить составление xpath. ну этого добра в инете навалом. да и тут на форуме в конкурсных статьях полно написано и про xpath и про навигацию бота на странице.
Некоторые клики не устраивают, если нужный сайт находиться на первой позиции, мышкой пошарил, а потом она подводиться к сайту который на первой позиции, и может кликнуть на картинки, видео.
Некоторые клики не устраивают, если нужный сайт находиться на первой позиции, мышкой пошарил, а потом она подводиться к сайту который на первой позиции, и может кликнуть на картинки, видео.
Не будет. Нужно сначала изучить xpath. Тогда не будешь составлять пути с таким id='uniq1590143420870312884' Нужно привязываться к чему-то стабильному. Поэтому дело не в кубиках и снипетах.
эти клики по шапке сайта , происходят не от того что используется кубик или снипет. это особенность верстки этого сайта. шапка закреплена и начинает перекрывать некоторые элементы.
тут просто так не получиться. тут либо надо находить элемент этой шапки и удалять из верстки, либо проверять куда крыса кликает и сравнивать с тем элементом на который хотим кликнуть. и если есть перекрытие то что то сделать, например проскролить выше страницу и идти на второй заход клика. тут нужны циклы , счетчики повторов, проверки элементов. наверно 1-й вариант проще все таки
эти клики по шапке сайта , происходят не от того что используется кубик или снипет. это особенность верстки этого сайта. шапка закреплена и начинает перекрывать некоторые элементы.
тут просто так не получиться. тут либо надо находить элемент этой шапки и удалять из верстки, либо проверять куда крыса кликает и сравнивать с тем элементом на который хотим кликнуть. и если есть перекрытие то что то сделать, например проскролить выше страницу и идти на второй заход клика. тут нужны циклы , счетчики повторов, проверки элементов. наверно 1-й вариант проще все таки
Или убрать, полную эмуляцию мыши (максимальное качество) тогда такого нет.
Если отключаешь нормально, но не хотелось бы. Проскролить выше, вот что надо, но как это сделать