Сервис веб-фотошоп, не получается исправить существующий текст

ruthless

Client
Регистрация
13.02.2017
Сообщения
215
Благодарностей
62
Баллы
28
Всем добрый день. Возникла потребность исправить текст в psd файле, но что-бы его исправить, нужно либо по самому тексту кликнуть в рабочей области - что не получается, ввиду того что там сплошной canvas. Либо из раздела "Слои" справа, кликнув по иконке нужного слоя 2 раза. Что уже пробовал, двойные клики из C#, наводясь на элемент. Get координат элемента и двойной клик по нему с помощью "эмуляции мыши", не вышло так-же, хотя вручную всё без проблем получается. Пример на скриншоте, буду благодарен за помощь.

Ссылка на сервис: НЕ РЕКЛАМА!

86100
 

ruthless

Client
Регистрация
13.02.2017
Сообщения
215
Благодарностей
62
Баллы
28
Ребят, проблема по прежнему актуальна, буду благодарен любой помощи
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 167
Благодарностей
2 168
Баллы
113
C#:
//div[@class='label' and text() = 'Test1']
1638351262117.png

UPD: перечитал стартпост и понял что там проблема не только в поиске, а и в даблклике на элементе. Хз, раньше с даблкликом не сталкивался, но с того что по форуму нагуглил то такой метод через C# сработал:
C#:
// Конструктор действий, тип RiseEvent
HtmlElement he = instance.ActiveTab.FindElementByXPath("//div[@class='label' and text() = 'Test1']", 0);
if (he.IsVoid) return -1;

// Задержка эмуляции
instance.WaitFieldEmulationDelay();

instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(he);
instance.ActiveTab.FullEmulationMouseClick("DoubleClick", "click");
instance.ActiveTab.FullEmulationMouseClick("DoubleClick", "click");
 
Последнее редактирование:
  • Спасибо
Реакции: ruthless

ruthless

Client
Регистрация
13.02.2017
Сообщения
215
Благодарностей
62
Баллы
28
C#:
//div[@class='label' and text() = 'Test1']
Посмотреть вложение 86109

UPD: перечитал стартпост и понял что там проблема не только в поиске, а и в даблклике на элементе. Хз, раньше с даблкликом не сталкивался, но с того что по форуму нагуглил то такой метод через C# сработал:
C#:
// Конструктор действий, тип RiseEvent
HtmlElement he = instance.ActiveTab.FindElementByXPath("//div[@class='label' and text() = 'Test1']", 0);
if (he.IsVoid) return -1;

// Задержка эмуляции
instance.WaitFieldEmulationDelay();

instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(he);
instance.ActiveTab.FullEmulationMouseClick("DoubleClick", "click");
instance.ActiveTab.FullEmulationMouseClick("DoubleClick", "click");
Спасибо. С поиском слоя проблем не было, тот вариант что вы прислали - я использовал почти аналогичным образом, и не выходило ничего. Там именно вручную удавалось выделить нужный текст двумя кликами по "квадратику", другими способами нифига. В этом весь сок :(

Сейчас попробую ваше решение
 

ruthless

Client
Регистрация
13.02.2017
Сообщения
215
Благодарностей
62
Баллы
28
86111


Вот наглядно, сначала отработал C# с двойным кликом по элементу Text1 (видно курсор ZP), далее я вручную кликаю по каждому, при первом варианте текст в рабочем пространстве не выделяется, вручную - всё ок
 

ruthless

Client
Регистрация
13.02.2017
Сообщения
215
Благодарностей
62
Баллы
28
86112


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

orka13

Client
Регистрация
07.05.2015
Сообщения
2 167
Благодарностей
2 168
Баллы
113
Вижу я не на тот что надо элемент наводил. Я получается слой просто переименовывал двойным нажатием. Там оно срабатывает, а вот с двойным кликом по иконке нет. По координатам тоже безуспешно в C# пробовал:
C#:
// Конструктор действий, тип RiseEvent
HtmlElement he = instance.ActiveTab.FindElementByXPath("//div[@class='headL' and ./div[@class='label' and text() = 'Test1']]//div/canvas", 0);
if (he.IsVoid) return -1;
// Задержка эмуляции
instance.WaitFieldEmulationDelay();
// Вызвать событие "click"
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(he);
System.Threading.Thread.Sleep(new Random().Next(1000,1000)); // пауза
//Клик
int abs_x = instance.ActiveTab.FullEmulationMouseCurrentPosition.X;
int abs_y = instance.ActiveTab.FullEmulationMouseCurrentPosition.Y;
instance.Click(abs_x, abs_x, abs_y, abs_y, "DoubleClick", "Normal");
На форуме есть подобная тема без решения:
Боюсь что я тут опускаю руки. Может кто поопытнее поможет, буду ждать, ибо вопрос мне тоже интересен.
 
Последнее редактирование:
  • Спасибо
Реакции: ruthless

ruthless

Client
Регистрация
13.02.2017
Сообщения
215
Благодарностей
62
Баллы
28
Вижу я не на тот что надо элемент наводил. Я получается слой просто переименовывал двойным нажатием. Там оно срабатывает, а вот с двойным кликом по иконке нет. По координатам тоже безуспешно в C# пробовал:
C#:
// Конструктор действий, тип RiseEvent
HtmlElement he = instance.ActiveTab.FindElementByXPath("//div[@class='headL' and ./div[@class='label' and text() = 'Test1']]//div/canvas", 0);
if (he.IsVoid) return -1;
// Задержка эмуляции
instance.WaitFieldEmulationDelay();
// Вызвать событие "click"
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(he);
System.Threading.Thread.Sleep(new Random().Next(1000,1000)); // пауза
//Клик
int abs_x = instance.ActiveTab.FullEmulationMouseCurrentPosition.X;
int abs_y = instance.ActiveTab.FullEmulationMouseCurrentPosition.Y;
instance.Click(abs_x, abs_x, abs_y, abs_y, "DoubleClick", "Normal");
На форуме есть подобная тема без решения:
Боюсь что я тут опускаю руки. Может кто поопытнее поможет, буду ждать, ибо вопрос мне тоже интересен.
Спасибо за попытку, дружище, эту тему я тоже читал, голову ломал вчера часов 6 и сдался в итоге. Хотя кажется, простейшая задача
 

volody00

Client
Регистрация
06.09.2016
Сообщения
794
Благодарностей
814
Баллы
93
@nicanil , можешь глянуть, по какой причине не отрабатывает двойной клик на этом сайте? А то тоже любопытно стало
 
  • Спасибо
Реакции: ruthless

trecho

Client
Регистрация
12.07.2018
Сообщения
171
Благодарностей
124
Баллы
43
странная ссылка у вас в посте, вот домашняя страница это сервиса - https://www.photopea.com/
 

ruthless

Client
Регистрация
13.02.2017
Сообщения
215
Благодарностей
62
Баллы
28

ruthless

Client
Регистрация
13.02.2017
Сообщения
215
Благодарностей
62
Баллы
28
Уважаемый @nicanil помог с решением, кому будет необходимо, прикладываю ответ и шаблон.
Удалось добиться желаемого только в мобильной версии при тач событиях.
Пробовал в простой версии использовать тач события. Вроде и срабатывает, но как-то неуверенно. Можете поэкспериментировать.

Информацию отправлю программистам, чтоб разобрались в чём проблема.
 

Вложения

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