xpath для первого поста в профиле Instagram не работает (python, селен, хромедрайвер) - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь нажать на первое сообщение после перехода в любой профиль Instagram. Я посмотрел на xpath первого поста в профилях нескольких пользователей Instagram, и все они кажутся одинаковыми. Вот пример профиля Месси.

Вот моя попытка использовать chromedriver с python, чтобы нажать на первый пост Месси. Я уже перешел на https://www.instagram.com/leomessi/, который является профилем Месси.

first_post_elem_click = driver.find_element_by_path('//*[@id="react-root"]/section/main/div/div[4]/article/div[1]/div/div[1]/div[1]/a/div').click()

Однако, первое сообщение не нажимается. Буду очень признателен за любую помощь.

Ответы [ 3 ]

0 голосов
/ 29 марта 2020

Я только что проверил это в Firefox: $x('//*[@id="react-root"]/section/main/div/descendant::article/descendant::a[1]'). Это должно дать вам то, что вы хотите, я думаю.

0 голосов
/ 29 марта 2020

Пожалуйста, проверьте ниже решение,

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By


Browser = webdriver.Chrome(executable_path=r"chromedriver.exe")

Browser.get("https://www.instagram.com/leomessi/")

WebDriverWait(Browser, 20).until(EC.element_to_be_clickable((By.XPATH, "//body//div[contains(@class,'_2z6nI')]//div//div//div[1]//div[1]//a[1]//div[1]//div[2]"))).click()
0 голосов
/ 29 марта 2020

Вместо использования абсолютного xpath вы должны использовать относительный xpath.
Вы можете нажать на первое сообщение, используя следующую команду (также применили явное ожидание):

WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "(//div[@class='Nnq7C weEfm']//img)[1]"))).click()

Вам необходимо добавить следующий импорт:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
...