www.youtube.com

вопросы связанные с работой версии с Chromium
maleziv@gmail.com
Сообщения: 42
Зарегистрирован: 17 сен 2013, 14:44

www.youtube.com

Сообщение maleziv@gmail.com » 18 апр 2020, 13:59

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


$like= $element->get_number_by_inner_text("Понравилось автору", false);
echo $like;
$element->click_by_number( $like); с лайком проблем нет хотя надпись Понравилось автору не отображается на дисплее.
Вложения
point.jpg
point.jpg (23.59 КБ) 1181 просмотр

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: www.youtube.com

Сообщение Support » 18 апр 2020, 15:18

Если ваш комментарий первый в списке тогда можно сделать вот так
$div->get_by_id("action-menu")->get_child_by_attribute("id","button",true,true)->send_mouse_click(15,15);
sleep(1);
$anchor->click_by_inner_text("Закрепить",true);
sleep(1);
$element->click_by_inner_text("ЗАКРЕПИТЬ");
если не первый тогда вам нужно сначала получить родительский элемент, в котором находится "action-menu", и далее уже получить "action-menu" и у него получить get_child_by_attribute("id","button",true,true)

maleziv@gmail.com
Сообщения: 42
Зарегистрирован: 17 сен 2013, 14:44

Re: www.youtube.com

Сообщение maleziv@gmail.com » 18 апр 2020, 16:21

Ок спасибо большое!

maleziv@gmail.com
Сообщения: 42
Зарегистрирован: 17 сен 2013, 14:44

Re: www.youtube.com

Сообщение maleziv@gmail.com » 18 апр 2020, 18:19

Support писал(а):
18 апр 2020, 15:18
Если ваш комментарий первый в списке тогда можно сделать вот так
$div->get_by_id("action-menu")->get_child_by_attribute("id","button",true,true)->send_mouse_click(15,15);
sleep(1);
$anchor->click_by_inner_text("Закрепить",true);
sleep(1);
$element->click_by_inner_text("ЗАКРЕПИТЬ");
если не первый тогда вам нужно сначала получить родительский элемент, в котором находится "action-menu", и далее уже получить "action-menu" и у него получить get_child_by_attribute("id","button",true,true)
Еще раз спасибо, а подскажите пожалуйста как вы получаете такую конструкцию $div->get_by_id("action-menu")->get_child_by_attribute("id","button",true,true)->send_mouse_click(15,15); в самом хумане правой кнопкой кликаете на три точки и меню выбираете?? у себя такого не увидел...приведите плиз картинки или дайте ссылку как это делаете

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: www.youtube.com

Сообщение Support » 18 апр 2020, 20:01

Делаю это через выбор в дереве. Так как элемент из трёх точек повторяющийся, и может встречаться и выше комментария, то мы находим в дереве родительский элемент.

Нажимаем на три точки правой кнопкой мыши и видим в дереве следующее:
tree.jpg
tree.jpg (200.43 КБ) 1162 просмотра
и тут же в дереве находим его родительский элемент. ПОтом получаем его и сразу же у него получаем нужный нам с помощью функционала интерфейс элемента .

Мы даже получаем не сам выбранный элемент, а тот что над ним button [id=button]. Так как мы используем работу с мышью, а не команду клика по элементу, то мы можем использовать элемент, который находится в том же месте. События клика будут выполняться, как будто туда кликнули мышью, и достигать всех нужных элементов.

Это выглядит вот так:
tree1.jpg
tree1.jpg (208.71 КБ) 1158 просмотров

И потом на глаз прикидывает координаты для команды send_mouse_click(15,15); так что бы они попадали в размер кнопки. И в итоге получаем такую конструкцию
получить action-menu у него получить дочерний элемент "id","button" и в этот дочерний элемент отправить событие клика мыши в координатах 15,15 в рамках самого элемента.

Получаем :
$div->get_by_id("action-menu")->get_child_by_attribute("id","button",true,true)->send_mouse_click(15,15);
Этот же код может быть представлен в следующем виде:
// получить action-menu
$dv = $div->get_by_id("action-menu");
// получить у него дочерний "id","button"
$bt = $dv->get_child_by_attribute("id","button",true,true);
// кликнуть мышью по найденному дочернему 
$bt->send_mouse_click(15,15);

maleziv@gmail.com
Сообщения: 42
Зарегистрирован: 17 сен 2013, 14:44

Re: www.youtube.com

Сообщение maleziv@gmail.com » 19 апр 2020, 08:32

Еще раз спасибо за подробное объяснение.
Может кому будет полезным, сделал тоже самое через контекстное меню самого браузера Хрома. Курсор мыши над элементом -> контекстное меню (правая кнопка мыши)-> Отобразить код.
Может у меня так, но через браузер мне кажется удобнее реализация, т.к. наводишь на код и элементы страницы и они сразу подсвечиваются.

maleziv@gmail.com
Сообщения: 42
Зарегистрирован: 17 сен 2013, 14:44

Re: www.youtube.com

Сообщение maleziv@gmail.com » 19 апр 2020, 09:58

А как тогда на ДИЗЛАЙК нажать, с лайком проблем нет: $div->get_by_id("menu-container")->get_child_by_attribute("id","button",true,true)->send_mouse_click(15,15);
я так понимаю нужен уникальный id.
Вложения
dizlaik.jpg
dizlaik.jpg (7.69 КБ) 1142 просмотра

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: www.youtube.com

Сообщение Support » 19 апр 2020, 14:36

Тут можно проще сделать:
$btn->click_by_attribute("aria-label", "Видео не понравилось вам и ещё", false);

maleziv@gmail.com
Сообщения: 42
Зарегистрирован: 17 сен 2013, 14:44

Re: www.youtube.com

Сообщение maleziv@gmail.com » 19 апр 2020, 15:03

Support писал(а):
19 апр 2020, 14:36
Тут можно проще сделать:
$btn->click_by_attribute("aria-label", "Видео не понравилось вам и ещё", false);
Спасибо четко! да смотрел в сторону aria-label , но не знал как реализовать.
все оказалось просто.

maleziv@gmail.com
Сообщения: 42
Зарегистрирован: 17 сен 2013, 14:44

Re: www.youtube.com

Сообщение maleziv@gmail.com » 28 апр 2020, 09:16

Подскажите плиз как выбрать заданное число
В запланированной публикации на Ютуб??
Например установить 1 мая.

Даты все время меняются, и как допустим находясь в календаре в апреле запланировать публикацию видео на 5 июня 2020г. ?
Вложения
add.jpg
add.jpg (58.94 КБ) 1118 просмотров

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: www.youtube.com

Сообщение Support » 28 апр 2020, 13:31

// получаем текущую дату
echo $date = date("M j, Y");

// кликнуть по сегоднешней дате
$span->click_by_inner_text($date);
// очищаем старую дату
$input->set_value_by_number(2, "");
// задаём новую дату
$input->send_keyboard_input_by_number(2,"Jun 5, 2020\n", "20:40");


Можно так. Единственное можете попробовать input не через номер, а скажем через class получать.

maleziv@gmail.com
Сообщения: 42
Зарегистрирован: 17 сен 2013, 14:44

Re: www.youtube.com

Сообщение maleziv@gmail.com » 28 апр 2020, 13:58

Support писал(а):
28 апр 2020, 13:31
// получаем текущую дату
echo $date = date("M j, Y");

// кликнуть по сегоднешней дате
$span->click_by_inner_text($date);
// очищаем старую дату
$input->set_value_by_number(2, "");
// задаём новую дату
$input->send_keyboard_input_by_number(2,"Jun 5, 2020\n", "20:40");


Можно так. Единственное можете попробовать input не через номер, а скажем через class получать.
клик у меня так работает $span->click_by_inner_text('апр',false);
, а так не работает // кликнуть по сегоднешней дате
$span->click_by_inner_text($date);

// очищаем старую дату
$input->set_value_by_number(2, ""); ----2 этот номер рандомно подставялется ютубом

maleziv@gmail.com
Сообщения: 42
Зарегистрирован: 17 сен 2013, 14:44

Re: www.youtube.com

Сообщение maleziv@gmail.com » 28 апр 2020, 14:30

Спасибо реализовал через get_all_numbers_by_inner_text

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: www.youtube.com

Сообщение Support » 28 апр 2020, 16:53

Support писал(а):
28 апр 2020, 13:31
А Вы пробовали свой вариант в деле?? у меня не работает ваш вариант.
А через классы как можно реализовать??
Да пробовал.Иначе как бы я его написал. У меня просто язык английский видимо по этому отличалось.

maleziv@gmail.com
Сообщения: 42
Зарегистрирован: 17 сен 2013, 14:44

Re: www.youtube.com

Сообщение maleziv@gmail.com » 04 окт 2020, 03:30

Support писал(а):
18 апр 2020, 20:01
Делаю это через выбор в дереве. Так как элемент из трёх точек повторяющийся, и может встречаться и выше комментария, то мы находим в дереве родительский элемент.

Нажимаем на три точки правой кнопкой мыши и видим в дереве следующее:

tree.jpg

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

Мы даже получаем не сам выбранный элемент, а тот что над ним button [id=button]. Так как мы используем работу с мышью, а не команду клика по элементу, то мы можем использовать элемент, который находится в том же месте. События клика будут выполняться, как будто туда кликнули мышью, и достигать всех нужных элементов.

Это выглядит вот так:

tree1.jpg


И потом на глаз прикидывает координаты для команды send_mouse_click(15,15); так что бы они попадали в размер кнопки. И в итоге получаем такую конструкцию
получить action-menu у него получить дочерний элемент "id","button" и в этот дочерний элемент отправить событие клика мыши в координатах 15,15 в рамках самого элемента.

Получаем :
$div->get_by_id("action-menu")->get_child_by_attribute("id","button",true,true)->send_mouse_click(15,15);
Этот же код может быть представлен в следующем виде:
// получить action-menu
$dv = $div->get_by_id("action-menu");
// получить у него дочерний "id","button"
$bt = $dv->get_child_by_attribute("id","button",true,true);
// кликнуть мышью по найденному дочернему 
$bt->send_mouse_click(15,15);

А КАК ТОГДА БЫТЬ с отсылкой клика в окно браузера хумана>send_mouse_click(15,15);

Если его окошко уменьшить, тогда координаты сместятся и верстка сайта подстроится под новый размер в браузере??

У меня клик не выходит по заданной области если я уменьшаю окно в Ютубе, т.к. он ужимает свою версию внутри бразера, так сказать адаптивную верстку под размеры.
Так происходит если сжимать окон в минимум по оси Y

Ответить