Попытки создания первого шаблона

zhuravok96

Client
Регистрация
05.05.2021
Сообщения
30
Благодарностей
1
Баллы
8
Всем здравствуйте. Не знаю кому будет интересно мне помогать, но если такие найдутся - всем большое спасибо.
Суть задачи
нужно заходя на страницу из группы ФБ - переходить в оригинальный профиль человека. Бывает 2 ситуации - когда кнопка "посмотреть основной профиль"
77660


я сделал экшн клик на кнопку когда она не спрятана в "..." (настроил его по xPath'у, так практичным путем отрабатывал лучше) - и в случае если экшн "не отработал" - сделал экшн нажатия на кнопку, спрятанную в "..."
но в итоге и когда есть кнопка и когда нет, скрипт порой выдает крестик (не отработавший экшн). с чем это все может быть связано и как лучше обставить данную ситуацию, товарищи знатоки?
77662

клик в первой ситуации
77663

клик во второй ситуации


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

Вложения

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 719
Баллы
113

volody00

Client
Регистрация
06.09.2016
Сообщения
918
Благодарностей
953
Баллы
93
когда у тебя крестик, проверяй свои xpath через chrome dev tools (после открытия нажми ctrrl+f и введи xpath). Ты увидишь, что xpath не подходит. далее смотри, что там в коде фб поменял и подбирай новый путь. Можешь перечислять несколько через | н-р: //p[text()='вася']|//div[text()='петя']
a3.png
 
  • Спасибо
Реакции: zhuravok96

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
  • Спасибо
Реакции: zhuravok96

Revian

Client
Регистрация
08.05.2021
Сообщения
34
Благодарностей
20
Баллы
8
Делай еще лучше паузы между действиями, тогда будет намного лучше работать клик. И не будет таких вот мискликов.
 
  • Спасибо
Реакции: zhuravok96

zhuravok96

Client
Регистрация
05.05.2021
Сообщения
30
Благодарностей
1
Баллы
8
При проверке xpath можно использовать плагин хрома. Подробности в этом сообщении
через xPath видимо не выйдет найти элементы в фб. т.к. при 10 перезагрузках страницы у каждой кнопки и каждого поля совсем разные xPath'ы
1) driver.findElement(By.xpath("//body/div[@id='mount_0_0_tM']/div[1]/div[1]/div[1]/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[2]/form[1]/div[1]/div[3]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]"))
2) driver.findElement(By.xpath("//body/div[@id='mount_0_0_tM']/div[1]/div[1]/div[1]/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[2]/form[1]/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]"))
3)
driver.findElement(By.xpath("//body/div[@id='mount_0_0_tM']/div[1]/div[1]/div[1]/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[2]/form[1]/div[1]/div[3]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]"))

подскажите пожалуйста. как по человечески найти кнопку сообщение - я пока сделал через поиск по картинке, вроде как на 10 разных страницах работает
следующая задача - написать сообщение - нужно как то найти нужный элемент, вставить текст и нажать энтер, что бы отправить сообщение. (я вообще не вижу возможности нажать энтер), подскажите по этой задаче по максимуму что сделать можно
 

Вложения

  • 757,1 КБ Просмотры: 71

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 719
Баллы
113
//body/div[@id='mount_0_0_tM']/div[1]/div[1]/div[1]/div[5]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[2]/form[1]/div[1]/div[3]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div[1]/div[1]
Вот такие xpath никогда не будут работать. тебе 3 человека написали что надо правильно составить xpath, а ты выкладываешь опять какой то вырви глаз....
совет, сначала научись работать с xpath или с поиском по селекторам. Суть одна, чем быстрее освоишь поиск по элементам, тем быстрее начнешь писать ботов.

вот есть статейка интересная https://zennolab.com/discussion/threads/navigacija-bota-na-web-stranicax.48679/
 

rastvl

Client
Команда форума
Регистрация
16.01.2019
Сообщения
656
Благодарностей
1 061
Баллы
93
через xPath видимо не выйдет найти элементы в фб. т.к. при 10 перезагрузках страницы у каждой кнопки и каждого поля совсем разные xPath'ы
Нужно привязываться к постоянным элементам. В фб вёрстка сложная, поэтому привязываться можно к тексту кнопок, например, и подобным вещам. Вроде даже этого материала вполне хватит, чтобы составить нормальный путь - https://onedev.net/post/458
я пока сделал через поиск по картинке
Ну это треш какой-то...
 
  • Спасибо
Реакции: zhuravok96

bitardenko

Client
Регистрация
27.12.2020
Сообщения
91
Благодарностей
73
Баллы
18
Жмешь "исследовать элемент" на нужном элементе через правую кнопку мыши, открывается дерево элементов. Если выбрался не тот элемент, клацаешь по дереву пока не найдешь нужный. Смотришь на параметры элемента, айди, текст, и т.д. в большинстве случаев подходит класс. Если там что-то типа "DSdaa1", то он генерируется динамически и такой класс не подходит, если там что-то типа "button-confirm", то это то что нужно. Соответственно xpath будет
//button[@class="button-confirm"] Или
//button[contains(@class, "button-confirm")] Или через текст
//button[contains(text(), 'Кнопка')]

Если таких элементов несколько ищешь выше по дереву родительский элемент и ставишь перед искомым соответственно будет
//div[@class="button-group"]/button[@class="button-confirm"]
Как по мне, это самый простой вариант.
 
  • Спасибо
Реакции: zhuravok96 и trecho

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
через xPath видимо не выйдет найти элементы в фб. т.к. при 10 перезагрузках страницы у каждой кнопки и каждого поля совсем разные xPath'ы
Потому что надо правильно составлять пути и привязываться к постоянным элементам. Да это не просто, но при желании можно сделать.
 
  • Спасибо
Реакции: zhuravok96

zhuravok96

Client
Регистрация
05.05.2021
Сообщения
30
Благодарностей
1
Баллы
8
Нужно привязываться к постоянным элементам. В фб вёрстка сложная, поэтому привязываться можно к тексту кнопок, например, и подобным вещам. Вроде даже этого материала вполне хватит, чтобы составить нормальный путь - https://onedev.net/post/458

Ну это треш какой-то...

не могу вообще найти примеров синтаксиса

//*[text()='Aa']
написал примерно так, т.к. в текстовом поле есть данный текст и все равно не работает. я наверное в синтаксисе ошибся?
78417
 

zhuravok96

Client
Регистрация
05.05.2021
Сообщения
30
Благодарностей
1
Баллы
8

не могу вообще найти примеров синтаксиса

//*[text()='Aa']
написал примерно так, т.к. в текстовом поле есть данный текст и все равно не работает. я наверное в синтаксисе ошибся?
Посмотреть вложение 78417
78424
 

volody00

Client
Регистрация
06.09.2016
Сообщения
918
Благодарностей
953
Баллы
93

zhuravok96

Client
Регистрация
05.05.2021
Сообщения
30
Благодарностей
1
Баллы
8
супер. большое спасибо
там порой можно оставить комментарий на стене - и тогда курсор не идет в сообщения. Но, сделанного вами видео, хватит что бы доработать скрипт своими силами
 

zhuravok96

Client
Регистрация
05.05.2021
Сообщения
30
Благодарностей
1
Баллы
8
я чуток доработал проект, и все же еще раз попрошу у вас помощи. @volody00
я добавил код для импорта куков на каждые 10 сообщений.
у меня на страницах не попадает курсор в сообщения и от этого не пишется сообщение + если можно в поиск добавить Message или Сообщения, а то я не нашел синтаксиса того на чем пишется или в такой ситуации.
 

Вложения

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