Yandex Market

MaxLucky

Client
Регистрация
13.08.2017
Сообщения
186
Благодарностей
14
Баллы
18
Добрый день. Столкнулся с проблемой при написании шаблона. Задача была написать шаблон, под заполнение карточек товаров на Яндекс Маркете.

Суть в том, что значения каждого поля уникальны, и меняются с каждым заполненным следующим. + есть пару полей которые меняются местами.

Решил делать через эмуляцию клавиатуры, но в процессе понял, что категорий товаров около 20. И почти в каждой категории добавляется новое поле, из-за которой требуется новая логика. Плюс из-за полей, которые меняются местами, всё ещё сложнее становится. Можно конечно все варианты проработать, но это очень много времени.

Xpath как понимаю, тоже не подходит в таком случае.

Может подскажете, как можно решить проблему?
 

Вложения

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 440
Благодарностей
5 459
Баллы
113
Зачем тебе эти id, class и прочее. Есть innerhtml, outerhtml, fultag и т.д. и т.п. Ни разу xpath не использовал, все задачи закрываю стандартными методами поиска элементов)
 

zarufakis

Client
Регистрация
22.03.2019
Сообщения
1 737
Благодарностей
1 131
Баллы
113
Добрый день. Столкнулся с проблемой при написании шаблона. Задача была написать шаблон, под заполнение карточек товаров на Яндекс Маркете.

Суть в том, что значения каждого поля уникальны, и меняются с каждым заполненным следующим. + есть пару полей которые меняются местами.

Решил делать через эмуляцию клавиатуры, но в процессе понял, что категорий товаров около 20. И почти в каждой категории добавляется новое поле, из-за которой требуется новая логика. Плюс из-за полей, которые меняются местами, всё ещё сложнее становится. Можно конечно все варианты проработать, но это очень много времени.

Xpath как понимаю, тоже не подходит в таком случае.

Может подскажете, как можно решить проблему?
Третья ссылка в яндексе
 
  • Спасибо
Реакции: Yuriy Zymlex

MaxLucky

Client
Регистрация
13.08.2017
Сообщения
186
Благодарностей
14
Баллы
18
Зачем тебе эти id, class и прочее. Есть innerhtml, outerhtml, fultag и т.д. и т.п. Ни разу xpath не использовал, все задачи закрываю стандартными методами поиска элементов)
Там всё равно уникальные значения получаются
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 440
Благодарностей
5 459
Баллы
113
Там всё равно уникальные значения получаются
Быть такого не может. Всегда можно найти уникальный)) Поискать?
Кинь ссылку как заполнять, и что надо сделать что бы id поменялись?

Если я ошибусь, то сделаю тебе костыль))
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 440
Благодарностей
5 459
Баллы
113
Глянул, там правда нет уник элементов в поле для ввода, есть 2 пути решения. Костыль и правильно.

1) Костыль. Берем элемент по имени
2022-07-05_164606.jpg

Расчитываем его место положение. Потом математически рассчитываем клик до поля и кликаем в него.

2) С использованием коллекции элементов (тут не подскажу, т.к. такую задачу сам не решал еще, мне помогали, но как раз учу шарп, может через недельку смогу)
 
  • Спасибо
Реакции: MaxLucky

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 440
Благодарностей
5 459
Баллы
113
Вот костыль, будет тонна кубиков на каждый клик, но куда деватся) Взял со старого шаба, чутка пошаманил с математикой, можешь сам высчитывать как тебе удобно. Основа есть. дальше сам.
 

Вложения

  • Спасибо
Реакции: MaxLucky

MaxLucky

Client
Регистрация
13.08.2017
Сообщения
186
Благодарностей
14
Баллы
18
Вот костыль, будет тонна кубиков на каждый клик, но куда деватся) Взял со старого шаба, чутка пошаманил с математикой, можешь сам высчитывать как тебе удобно. Основа есть. дальше сам.
Благодарю!
 

viol2021

Client
Регистрация
12.01.2021
Сообщения
482
Благодарностей
180
Баллы
43
Глянул, там правда нет уник элементов в поле для ввода, есть 2 пути решения. Костыль и правильно.

1) Костыль. Берем элемент по имени
Посмотреть вложение 94025

Расчитываем его место положение. Потом математически рассчитываем клик до поля и кликаем в него.

2) С использованием коллекции элементов (тут не подскажу, т.к. такую задачу сам не решал еще, мне помогали, но как раз учу шарп, может через недельку смогу)
Такого я еще не встречал. Вот это метод :D
 
  • Спасибо
Реакции: Mikhail B.

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 440
Благодарностей
5 459
Баллы
113
Такого я еще не встречал. Вот это метод :D
Да это костыль огромный, куда деватся, надо как то решать задачу было. Решил тогда так. Сейчас конечно стоило бы заморочится с коллекциями, но думаю и там не все так гладко. А вобще если у яндекса апи реал работает на постинг товаров, то лучше уж потратить время на изучение API.
 

MaxLucky

Client
Регистрация
13.08.2017
Сообщения
186
Благодарностей
14
Баллы
18
Ещё столкнулся с проблемой. Логика должна быть такая, если цвет, который мы получили, если у них в базе данных, то должен производиться клик по чекбоксу. Если же нету (не высвечивается ни один вариант) - то в поле ниже. Проблема именно, в том, чтобы понять как определять появился чекбокс или нет. Потому что как элемент прощёлкивается, даже если он не появился на страничке
 

Вложения

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 440
Благодарностей
5 459
Баллы
113
Ещё столкнулся с проблемой. Логика должна быть такая, если цвет, который мы получили, если у них в базе данных, то должен производиться клик по чекбоксу. Если же нету (не высвечивается ни один вариант) - то в поле ниже. Проблема именно, в том, чтобы понять как определять появился чекбокс или нет. Потому что как элемент прощёлкивается, даже если он не появился на страничке
У чекбоксов что то типо true false. Смотри внимательней.
 

MaxLucky

Client
Регистрация
13.08.2017
Сообщения
186
Благодарностей
14
Баллы
18

viol2021

Client
Регистрация
12.01.2021
Сообщения
482
Благодарностей
180
Баллы
43

MaxLucky

Client
Регистрация
13.08.2017
Сообщения
186
Благодарностей
14
Баллы
18
Вот костыль, будет тонна кубиков на каждый клик, но куда деватся) Взял со старого шаба, чутка пошаманил с математикой, можешь сам высчитывать как тебе удобно. Основа есть. дальше сам.
Ещё такой вопрос: Бывает зенка кликает не туда, особенно когда нужно проскролить к элементу и тыкнуть. Но заметил, что в проджект мейкере, если уменьшать, увеличивать окно - то результат разный бывает. Изменится это при выполнении в самой зенке? Или нужно делать так, чтобы все элементы были в зоне видемости? Скролить перед этим...
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 440
Благодарностей
5 459
Баллы
113
Ещё такой вопрос: Бывает зенка кликает не туда, особенно когда нужно проскролить к элементу и тыкнуть. Но заметил, что в проджект мейкере, если уменьшать, увеличивать окно - то результат разный бывает. Изменится это при выполнении в самой зенке? Или нужно делать так, чтобы все элементы были в зоне видемости? Скролить перед этим...
Уровень эмуляции меняй у клика и будет норм. там 4 скорости, на второй норм кликает.
 
  • Спасибо
Реакции: MaxLucky

MaxLucky

Client
Регистрация
13.08.2017
Сообщения
186
Благодарностей
14
Баллы
18
Уровень эмуляции меняй у клика и будет норм. там 4 скорости, на второй норм кликает.
instance.ActiveTab.FullEmulationMouseSetOptions(Global.Classes.rnd.Next(0, 1),Global.Classes.rnd.Next(0, 1),Global.Classes.rnd.Next(0, 1)); // скорость

Это выставляется от и до. От 1 до 2 получается?
1 самая быстрая?
 

MaxLucky

Client
Регистрация
13.08.2017
Сообщения
186
Благодарностей
14
Баллы
18
Но скорее всего дело не в скорости, шаблон не видет подвала с кнопкой, и кликает по ней
 

Вложения

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 440
Благодарностей
5 459
Баллы
113
instance.ActiveTab.FullEmulationMouseSetOptions(Global.Classes.rnd.Next(0, 1),Global.Classes.rnd.Next(0, 1),Global.Classes.rnd.Next(0, 1)); // скорость

Это выставляется от и до. От 1 до 2 получается?
1 самая быстрая?
это не та скорость) но тоже можно крутить
 

MaxLucky

Client
Регистрация
13.08.2017
Сообщения
186
Благодарностей
14
Баллы
18

Вложения

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 440
Благодарностей
5 459
Баллы
113

MaxLucky

Client
Регистрация
13.08.2017
Сообщения
186
Благодарностей
14
Баллы
18
double TickCount1 = double.Parse(project.Variables["t_1"].Value.Replace(".", ",")); // t_1 переменная с координатами
double TickCount2 = double.Parse(project.Variables["t_2"].Value.Replace(".", ",")); // t_2 переменная с координатами
int TickCount11 = Convert.ToInt32(TickCount1); // конверт из дробного в целые
int TickCount22 = Convert.ToInt32(TickCount2); // конверт из дробного в целые
instance.ActiveTab.FullEmulationMouseSetOptions(Global.Classes.rnd.Next(0, 10),Global.Classes.rnd.Next(0, 10),Global.Classes.rnd.Next(0, 10)); // скорость
instance.ActiveTab.FullEmulationMouseMove(TickCount11,TickCount22); // движение к полю
instance.ActiveTab.FullEmulationMouseClick("left", "click"); // клик

Подскажи пожалуйста где именно...
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 440
Благодарностей
5 459
Баллы
113
2022-07-10_172434.jpg
 

MaxLucky

Client
Регистрация
13.08.2017
Сообщения
186
Благодарностей
14
Баллы
18

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 440
Благодарностей
5 459
Баллы
113
Так клик происходит через C# экшн. Тут же ваше решение использовали с поиском по координатам
Значит придется по новой пилить.

Вот я делал себе недавно. Погугли код. сделай под себя. Делаешь клик, потом конвертируешь в шарп, и меняешь в коде строку с элементами.

C#:
// герерируем скорость мышки
Random rand = new Random();
instance.ActiveTab.FullEmulationMouseSetOptions(rand.Next(4,6),rand.Next(4,6),rand.Next(13,18));

// Конструктор действий, тип RiseEvent
HtmlElement he = instance.ActiveTab.FindElementByAttribute("textarea", "data-marker", "reply/input", "regexp", 0);
if (he.IsVoid) return -1;

// Задержка эмуляции
instance.WaitFieldEmulationDelay();
// Вызвать событие "click"
he.RiseEvent("click", "Full");
 

Wide

Client
Регистрация
04.02.2013
Сообщения
946
Благодарностей
258
Баллы
63
Пзд люди заморачиваются. Спарсь айди фильтров и ссылками делай что тебе нужно. И через амперсант передавай параметры &glfilter=ид_фильтра
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 440
Благодарностей
5 459
Баллы
113

Wide

Client
Регистрация
04.02.2013
Сообщения
946
Благодарностей
258
Баллы
63
ампер куда сант?))
заморачиваемся в меру своей необразованности :D
Ну ты главное понял. Кому сильно нужно, пусть изучают. Маркет я в хвост и гриву с 13 года юзаю. Были времена.
 
  • Спасибо
Реакции: Mikhail B.

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 440
Благодарностей
5 459
Баллы
113
Ну ты главное понял. Кому сильно нужно, пусть изучают. Маркет я в хвост и гриву с 13 года юзаю. Были времена.
Это в стандартном кубике или в шарпе делаешь?
 

Wide

Client
Регистрация
04.02.2013
Сообщения
946
Благодарностей
258
Баллы
63
  • Спасибо
Реакции: Mikhail B.

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