使用 selenium (Python) 实现 Instagram 自动化 - 关注和取消关注按钮

Instagram automation with selenium (Python) - Follow and unfollow button

我正在尝试实现一个功能,当我还没有关注用户时可以点击“关注”按钮,但是当按钮的文本出现时也可以忽略这部分代码是“取消关注”,表示我已经是该用户的关注者了。

我使用的代码如下:

Follow_Button = browser.find_element_by_xpath("//*[text()='Follow']")
Follow_Button.click()

当文本与“Follow”不同时,我如何添加一个例外来指定 selenium 应该跳过这行代码?

提前致谢

如果 selenium 找不到包含该文本的元素,它将引发 NoSuchElementException。您可以使用

导入它
from selenium.common.exceptions import NoSuchElementException

请记住 find_element_by_xpathfind_elements_by_xpath 是不同的。 elements 版本将 return 一个空列表而不是引发异常。

检查元素的 text*(在本例中为按钮)*,应用 if 条件检查文本是否为“Follow”。如果是,请点击。

button = driver.find_element_by_class_name("class_name")

if button.text == "Follow":
   button.click()
    

为此,我建议不要通过文本查找元素,而是通过任何其他属性、ID、class 或 xpath,但不要使用文本,因为它并不总是包含它。

希望这就是你的意思。

您可以使用 suppress 来自 contextlib alongside the NoSuchElementException 来自 selenium.common.exceptions:

from contextlib import suppress
from selenium.common.exceptions import NoSuchElementException

...

with suppress(NoSuchElementException):
     Follow_Button = browser.find_element_by_xpath('//*[text()="Follow"]')
     Follow_Button.click()

这样,如果 NoSuchElementException 被捕获,您的脚本将忽略此代码块。

try:
    Follow_Button = browser.find_element_by_xpath("//*[text()='Follow']")
    Follow_Button.click()
except:
    pass