Selenium 中的 Instagram XPath 不起作用? (Python)

Posted

技术标签:

【中文标题】Selenium 中的 Instagram XPath 不起作用? (Python)【英文标题】:Instagram XPath in Selenium Won't Work? (Python) 【发布时间】:2020-07-08 19:39:45 【问题描述】:

我在 Selenium 中创建了一个 Instagram 机器人,基本上是为了用其他 Instagram 帐户喜欢某些 cmets,但我无法在某个评论的评论部分中的 Instagram 心脏的 xpath 上单击()。我真的只需要在 Instagram 的评论部分中正确的 xpath,我将完成此操作。

from webdriver_manager.chrome import ChromeDriverManager
from time import sleep
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import urllib

Link = 'https://www.instagram.com/p/CCZDF7YH5Yb/c/17958711199328488/'
driver = webdriver.Chrome(ChromeDriverManager().install())


driver.get('https://www.instagram.com/')
driver.implicitly_wait(10)

driver.find_element_by_name('username').send_keys('username') #Changed for the purpose of making this thread
driver.find_element_by_name('password').send_keys('password')
Login = "//button[@type='submit']"
driver.find_element_by_xpath(Login).submit()
sleep(1)
#Logs into Instagram
print ('Logged In')

NotNow = "//button[contains(text(),'Not Now')]"
driver.find_element_by_xpath(NotNow).click()
#Clicks Pop Up
print ('Close Pop Up')

#ISSUE is Below

#CommentHeart = '//*[@id="react-root"]/section/main/div/div[1]/article/div[3]/section[1]/span[1]/button/svg' #THIS XPATH doesn't work?
driver.get(Link)
wait = WebDriverWait(driver, 20)
element = wait.until(EC.element_to_be_clickable((By.XPATH, '/main/div/div[1]/article/div[3]/div[1]/ul/div[2]/ul/div/li/div/span/div/button/svg'))) #THIS XPATH doesn't work
element.click()
#driver.find_element_by_xpath(CommentHeart).click()
print ('Likes Comment')```

This is the xpath I've been using, that doesn't work.
```//*[@id="react-root"]/section/main/div/div[1]/article/div[3]/div[1]/ul/div[2]/ul/div/li/div/span/div/button/svg```

【问题讨论】:

只是我学到的一个小技巧...如果您采用完整路径,那么事情可能不会那么容易破坏...如果您采用 xpath,请尝试转到根目录,如果它会崩溃以查看错误应该在哪里....另外,使用time.sleep代替驱动程序等待,只是为了使事情变得简单,然后让它们睡眠直到lthe​​ycsre可点击和其他东西(如果你让它等待5秒并且你可以看到它的可点击,但它会崩溃,这意味着你有 xpath 的问题......很多次我看到一个代码,人们只是在等待部分做错了并且正在努力让它工作......无论如何,GL 在编码! 【参考方案1】:

我使用下面的 xpath 找到了喜欢的按钮,它对我有用

driver.find_element_by_xpath('//*[@id="react-root"]/section/main/div/div[1]/article/div[2]/section[1]/'
                                         'span[1]/button').click()

我在你的代码中看到的是你有

/section[1]/span[1]/button/svg

但应该只是

/section[1]/span[1]/button

因为你想点击按钮而不是 svg

【讨论】:

欣赏这一点,我最终使用了//span/div/button[*[local-name()='svg']/@aria-label='Like'],但我也会尝试使用它。

以上是关于Selenium 中的 Instagram XPath 不起作用? (Python)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Instagram 上的 chrome 移动视图中获取 .click(),而不是右键单击-[Instagram 上的 Selenium]

如何使用 Selenium 在 Instagram 弹出框中向下滚动

使用 Selenium 和 python 为 Instagram 提供上传文件路径

使用 selenium 点击 Instagram 上的按钮

使用 Selenium Python 进行网页抓取 [Twitter + Instagram]

C# selenium instagram 登录问题