[Решено] Как в ProjectMaker нажать какую-либо кнопку в bing.com/chat?

lx2003

Client
Регистрация
15.02.2021
Сообщения
551
Благодарностей
136
Баллы
43
Здравствуйте!
Кто-нибудь знает как в ProjectMaker нажать какую-либо кнопку в bing.com/chat?
Скрин кнопок
123743

Можно даже нажать кнопку экспорт в текстовый файл.

Пробовал поиск по картинке, пробовал найти xpath, пробовал найти в конструктор действий (просит найти вручную).
Пробовал ответ найти в page.source и в page.text.

Но как-то не получается...

Может кто делал? Редко надо, но иногда надо.

И вообще есть какой-нибудь вариант отправить запрос через URL и получить ответ в удобном виде, чтобы проще скопировать оттуда и дальше использовать в шаблоне?


Перейти к решению
 
Последнее редактирование:

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 747
Благодарностей
8 839
Баллы
113
Здравствуйте!
Кто-нибудь знает как в ProjectMaker нажать какую-либо кнопку в bing.com/chat?
Скрин кнопок
Посмотреть вложение 123743

Можно даже нажать кнопку экспорт в текстовый файл.

Пробовал поиск по картинке, пробовал найти xpath, пробовал найти в конструктор действий (просит найти вручную).
Пробовал ответ найти в page.source и в page.text.

Но как-то не получается...

Может кто делал? Редко надо, но иногда надо.

И вообще есть какой-нибудь вариант отправить запрос через URL и получить ответ в удобном виде, чтобы проще скопировать оттуда и дальше использовать в шаблоне?
Не открывается урл, редиректит на Поиск.

Как вариант, можно брать координаты вышестоящего постоянного элемента и от него приращивать нужное количество пикселей и делать клик 'Эмуляцией мыши' по координатам.
 
  • Спасибо
Реакции: lx2003

lx2003

Client
Регистрация
15.02.2021
Сообщения
551
Благодарностей
136
Баллы
43
Не открывается урл, редиректит на Поиск.

Как вариант, можно брать координаты вышестоящего постоянного элемента и от него приращивать нужное количество пикселей и делать клик 'Эмуляцией мыши' по координатам.
Это и есть поиск (Поиск+ИИ Copilot), кликнуть можно только по кнопкам (ссылкам) в меню.
Т.е. открываю страницу, ввожу туда кубиком запрос, нажимаю кубиком Ctrl+Enter, получаю ответ.
Не могу пока найти вариант того, что ответ был на странице целиком, кроме того, что появились дополнительные возможные запросы, предлагаемые сервисом.
И не знаю как нажать кнопку скопировать или экспорт, или скопировать только ответ и только на тот запрос, который был сделан. Чаще всего ответ, который нужно скопировать или экспортировать - самый последний на странице запрос. Остальные кнопки не нажимаю шаблоном. )

Обработку как копировать и вставить из буфера обмена на C# нашел тут

Как вариант, можно брать координаты вышестоящего постоянного элемента и от него приращивать нужное количество пикселей и делать клик 'Эмуляцией мыши' по координатам.
Т.е. получается вариант только отскриншотить, найти на скриншоте положение части изображения (элемента) и его координаты, а дальше при тех же размерах инстанса делать клик? Только таким образом?
 
Последнее редактирование:

lx2003

Client
Регистрация
15.02.2021
Сообщения
551
Благодарностей
136
Баллы
43
Не открывается урл, редиректит на Поиск.

Как вариант, можно брать координаты вышестоящего постоянного элемента и от него приращивать нужное количество пикселей и делать клик 'Эмуляцией мыши' по координатам.
Вообще, на сколько метод скриншотить и высчитывать или высчитывать нужное количество пикселей эффективен при работе с сайтами, парсингом, эмуляцией работы с браузером, автоматизации действий в интернете?
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 680
Благодарностей
1 350
Баллы
113

lx2003

Client
Регистрация
15.02.2021
Сообщения
551
Благодарностей
136
Баллы
43

K R

Client
Регистрация
14.01.2017
Сообщения
103
Благодарностей
96
Баллы
28
Кнопки находятся за shadow-root, благо он здесь открыт (open, а не closed как стало в cloudflare после обновления несколько дней назад) и нажать на кнопки можно, используя js.
Сам я в js не особо разбираюсь, но тут не сложно в целом.

Первым делом нужно открыть инструменты веб-разработчика в зенке (devtools). Инструменты эти безбожно глючат, но возможно вам повезет и они отработают нормально.
Нажимаем на стрелку в левом верхнем углу devtools, наводим курсор на нужный нам элемент в браузере, жмём левую кнопку мыши.
123751
В окне devtools произойдет фокусировка на нужной нам строке html кода.
123752
Жмём правой кнопкой мыши на этом элементе, открывается контекстное меню. Если открывается в том виде, что и у меня (с чёрным контекстным меню), то можно грязно выругаться, перезагрузить PM и попытать счастья ещё раз.
123753
В контекстном меню нужно выбрать copy - js path или как-то так. Так мы получаем в буфер обмена полный путь к элементу, включая все эти шадоуруты.
Теперь нужно положить этот текст в кубик Свой код - JavaScript. Добавить к нему в конце .click();
В кубике выбираем Выполнять: на текущей странице.

Вот пример того, что скопировал я:
JavaScript:
document.querySelector("#b_sydConvCont > cib-serp").shadowRoot.querySelector("#cib-conversation-main").shadowRoot.querySelector("#cib-chat-main > cib-chat-turn").shadowRoot.querySelector("cib-message-group.response-message-group").shadowRoot.querySelector("cib-message").shadowRoot.querySelector("div > cib-message-actions").shadowRoot.querySelector("#copy-button").click();
Код нажимает на кнопку, всё ок, только в буфере обмена текст не появляется )
Значит пойдём другим путём и будем качать файлы.

Этот код сначала нажимает на кнопку экспорта, а через 3 секунды нажимает на кнопку Text:
JavaScript:
document.querySelector("#b_sydConvCont > cib-serp").shadowRoot.querySelector("#cib-conversation-main").shadowRoot.querySelector("#cib-chat-main > cib-chat-turn").shadowRoot.querySelector("cib-message-group.response-message-group").shadowRoot.querySelector("cib-message").shadowRoot.querySelector("div > cib-message-actions").shadowRoot.querySelector("#export-button").click();
setTimeout(() => {
document.querySelector("body > cib-dropdown").shadowRoot.querySelector("div > button:nth-child(3) > span").click();
}, 3000);
Код отрабатывает отлично, файл скачивается в папку Trash или куда там у вас назначено.

P.S. Уважаемый Sergodjan, может быть вы в курсе, этот баг с черным контекстным меню планируют чинить или может уже починили? Версия 7.7.13.0. И второй вопрос, не планируется ли оптимизировать работу с элементами страниц? У конкурентов сделано как-то так, что не требуются все эти пляски с бубном для работы с shadow-root.
 
  • Спасибо
Реакции: kagorec и lx2003

lx2003

Client
Регистрация
15.02.2021
Сообщения
551
Благодарностей
136
Баллы
43
Код нажимает на кнопку, всё ок, только в буфере обмена текст не появляется )
Значит пойдём другим путём и будем качать файлы.
Прям спасибо за такой ответ! Сам бился бы долго! :cg:

А почему он может не копироваться? Потому что из ProjectMaker выполняется?
 
Последнее редактирование:

lx2003

Client
Регистрация
15.02.2021
Сообщения
551
Благодарностей
136
Баллы
43

K R

Client
Регистрация
14.01.2017
Сообщения
103
Благодарностей
96
Баллы
28
Прям спасибо за такой ответ! Сам бился бы долго! :cg:

А почему он может не копироваться? Потому что из ProjectMaker выполняется?
А вот хз, я в js не силён. Может быть кто-то подскажет как правильно на эту кнопку кликнуть. Если вручную нажимать, то текст заносится в буфер обмена. Через код - нет. При этом аналогичные действия с другими кнопками(экспорт, лайки) приводят к нужному результату.
 
  • Спасибо
Реакции: lx2003

lx2003

Client
Регистрация
15.02.2021
Сообщения
551
Благодарностей
136
Баллы
43
А вот хз, я в js не силён. Может быть кто-то подскажет как правильно на эту кнопку кликнуть. Если вручную нажимать, то текст заносится в буфер обмена. Через код - нет. При этом аналогичные действия с другими кнопками(экспорт, лайки) приводят к нужному результату.
Спасибо! Попробую и так, и высчитыванием координат. Хотя, пока, может и экспорта файла хватит.

В общем, лишь бы не менялись атрибуты и параметры в них...
 
Последнее редактирование:

K R

Client
Регистрация
14.01.2017
Сообщения
103
Благодарностей
96
Баллы
28
Спасибо! Попробую и так, и высчитыванием координат. Хотя, пока, может и экспорта файла хватит.

В общем, лишь бы не менялись атрибуты и параметры в них...
Кстати, можно обратиться к ИИ, чтобы он написал код на js для получения координат кнопки. Js путь же есть, а дальше так же как клик можно сделать и получение координат в переменные, подставив к пути соответствующий код. Потом уже сделать обычный клик кубиком или кодом C#.
 
  • Спасибо
Реакции: lx2003

lx2003

Client
Регистрация
15.02.2021
Сообщения
551
Благодарностей
136
Баллы
43
Кстати, можно обратиться к ИИ, чтобы он написал код на js для получения координат кнопки. Js путь же есть, а дальше так же как клик можно сделать и получение координат в переменные, подставив к пути соответствующий код. Потом уже сделать обычный клик кубиком или кодом C#.
При чем в этом же:-)
 

lx2003

Client
Регистрация
15.02.2021
Сообщения
551
Благодарностей
136
Баллы
43
Код нажимает на кнопку, всё ок, только в буфере обмена текст не появляется )
Значит пойдём другим путём и будем качать файлы.
Кнопка Скопировать тоже не работает.

Код отрабатывает отлично, файл скачивается в папку Trash или куда там у вас назначено.
Работает! Файл скачивается! Спасибо!

Потестирую, чтобы кнопка Скопировать тоже работала.
 

lx2003

Client
Регистрация
15.02.2021
Сообщения
551
Благодарностей
136
Баллы
43
Вот пример того, что скопировал я:
JavaScript:
document.querySelector("#b_sydConvCont > cib-serp").shadowRoot.querySelector("#cib-conversation-main").shadowRoot.querySelector("#cib-chat-main > cib-chat-turn").shadowRoot.querySelector("cib-message-group.response-message-group").shadowRoot.querySelector("cib-message").shadowRoot.querySelector("div > cib-message-actions").shadowRoot.querySelector("#copy-button").click();
Код нажимает на кнопку, всё ок, только в буфере обмена текст не появляется )
Нажатие кнопки Скопировать скриптом работает и с помощью Ctrl+C и можно вставить с помощью скрипта C#:

C#:
project.Variables["text"].Value = System.Windows.Forms.Clipboard.GetText();//кладем текст в переменную text
 

lx2003

Client
Регистрация
15.02.2021
Сообщения
551
Благодарностей
136
Баллы
43
Всем спасибо!

@Sergodjan, @K R

Решение

Вариант 1:

Как вариант, можно брать координаты вышестоящего постоянного элемента и от него приращивать нужное количество пикселей и делать клик 'Эмуляцией мыши' по координатам.

Вариант 2:

Javascript - обработка кнопки Скопировать:
document.querySelector("#b_sydConvCont > cib-serp").shadowRoot.querySelector("#cib-conversation-main").shadowRoot.querySelector("#cib-chat-main > cib-chat-turn").shadowRoot.querySelector("cib-message-group.response-message-group").shadowRoot.querySelector("cib-message").shadowRoot.querySelector("div > cib-message-actions").shadowRoot.querySelector("#copy-button").click();
C# - вставить скопированный текст в переменную:
project.Variables["text"].Value = System.Windows.Forms.Clipboard.GetText();//кладем текст в переменную text

Вариант 3:

Javascript - обработка кнопки Экспорт в файл:
document.querySelector("#b_sydConvCont > cib-serp").shadowRoot.querySelector("#cib-conversation-main").shadowRoot.querySelector("#cib-chat-main > cib-chat-turn").shadowRoot.querySelector("cib-message-group.response-message-group").shadowRoot.querySelector("cib-message").shadowRoot.querySelector("div > cib-message-actions").shadowRoot.querySelector("#export-button").click();
setTimeout(() => {
document.querySelector("body > cib-dropdown").shadowRoot.querySelector("div > button:nth-child(3) > span").click();
}, 3000);

И еще чуть-чуть:

Кстати, можно обратиться к ИИ, чтобы он написал код на js для получения координат кнопки. Js путь же есть, а дальше так же как клик можно сделать и получение координат в переменные, подставив к пути соответствующий код. Потом уже сделать обычный клик кубиком или кодом C#.
 
Последнее редактирование:

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