使用 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_xpath
和 find_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
我正在尝试实现一个功能,当我还没有关注用户时可以点击“关注”按钮,但是当按钮的文本出现时也可以忽略这部分代码是“取消关注”,表示我已经是该用户的关注者了。
我使用的代码如下:
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_xpath
和 find_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