instagram 配置文件中第一个 post 的 xpath 不起作用(python、selenium、chromedriver)

xpath for first post on instagram profile not working (python, selenium, chromedriver)

我试图在导航到任何 Instagram 个人资料后点击第一个 post。我查看了多个 Instagram 用户个人资料中第一个 post 的 xpath,它们似乎都一样。这是梅西的个人资料示例。

这是我尝试使用带有 python 的 chromedriver 来点击梅西的第一个 post。我已经导航到 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()

但是,第一个 post 没有被点击。非常感谢任何帮助。

您应该使用相对 xpath,而不是使用绝对 xpath。
您可以使用以下命令单击第一个 post(也应用了显式等待):

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

我刚刚在 Firefox 中检查过这个:$x('//*[@id="react-root"]/section/main/div/descendant::article/descendant::a[1]')。我想这应该能满足您的需求。

请检查以下解决方案,

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()