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

  • Автор темы Автор темы zhuravok96
  • Дата начала Дата начала

zhuravok96

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


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

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

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


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

Вложения

когда у тебя крестик, проверяй свои xpath через chrome dev tools (после открытия нажми ctrrl+f и введи xpath). Ты увидишь, что xpath не подходит. далее смотри, что там в коде фб поменял и подбирай новый путь. Можешь перечислять несколько через | н-р: //p[text()='вася']|//div[text()='петя']
a3.png
 
  • Оценить
Реакции: zhuravok96
  • Оценить
Реакции: zhuravok96
Делай еще лучше паузы между действиями, тогда будет намного лучше работать клик. И не будет таких вот мискликов.
 
  • Оценить
Реакции: zhuravok96
При проверке 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 разных страницах работает
следующая задача - написать сообщение - нужно как то найти нужный элемент, вставить текст и нажать энтер, что бы отправить сообщение. (я вообще не вижу возможности нажать энтер), подскажите по этой задаче по максимуму что сделать можно
 

Вложения

  • 123.png
    123.png
    757,1 KB · Просмотры: 144
//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/
 
через xPath видимо не выйдет найти элементы в фб. т.к. при 10 перезагрузках страницы у каждой кнопки и каждого поля совсем разные xPath'ы
Нужно привязываться к постоянным элементам. В фб вёрстка сложная, поэтому привязываться можно к тексту кнопок, например, и подобным вещам. Вроде даже этого материала вполне хватит, чтобы составить нормальный путь - https://onedev.net/post/458
я пока сделал через поиск по картинке
Ну это треш какой-то...
 
  • Оценить
Реакции: zhuravok96
Жмешь "исследовать элемент" на нужном элементе через правую кнопку мыши, открывается дерево элементов. Если выбрался не тот элемент, клацаешь по дереву пока не найдешь нужный. Смотришь на параметры элемента, айди, текст, и т.д. в большинстве случаев подходит класс. Если там что-то типа "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
через xPath видимо не выйдет найти элементы в фб. т.к. при 10 перезагрузках страницы у каждой кнопки и каждого поля совсем разные xPath'ы
Потому что надо правильно составлять пути и привязываться к постоянным элементам. Да это не просто, но при желании можно сделать.
 
  • Оценить
Реакции: zhuravok96
Нужно привязываться к постоянным элементам. В фб вёрстка сложная, поэтому привязываться можно к тексту кнопок, например, и подобным вещам. Вроде даже этого материала вполне хватит, чтобы составить нормальный путь - https://onedev.net/post/458

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

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

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

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

//*[text()='Aa']
написал примерно так, т.к. в текстовом поле есть данный текст и все равно не работает. я наверное в синтаксисе ошибся?
Посмотреть вложение 78417
78424
 
супер. большое спасибо
там порой можно оставить комментарий на стене - и тогда курсор не идет в сообщения. Но, сделанного вами видео, хватит что бы доработать скрипт своими силами
 
я чуток доработал проект, и все же еще раз попрошу у вас помощи. @volody00
я добавил код для импорта куков на каждые 10 сообщений.
у меня на страницах не попадает курсор в сообщения и от этого не пишется сообщение + если можно в поиск добавить Message или Сообщения, а то я не нашел синтаксиса того на чем пишется или в такой ситуации.
 

Вложения

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