【问题标题】:Instagram automation with selenium (Python) - Follow and unfollow button使用 selenium (Python) 实现 Instagram 自动化 - 关注和取消关注按钮
【发布时间】:2020-12-24 00:27:49
【问题描述】:

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

我使用的代码如下:

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

当文本与“关注”不同时,如何向 selenium 添加异常以指定它应该跳过这行代码?

提前致谢

【问题讨论】:

    标签: python selenium instagram


    【解决方案1】:
    try:
        Follow_Button = browser.find_element_by_xpath("//*[text()='Follow']")
        Follow_Button.click()
    except:
        pass
    

    【讨论】:

    • 不要对预期条件使用异常。这应该由 if 语句处理。
    • 嗨 Mohen,我喜欢您提出的解决方案。如果按钮已被单击,这使我可以轻松地跟踪变量。考虑到这段代码是被抓取的 instragram 用户列表循环的一部分,因此最终版本是:try: Follow_Button = browser.find_element_by_xpath("//*[text()='Follow']") Follow_Button.click( ) Followed="1" 除外:Followed="0" pass
    【解决方案2】:

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

    from selenium.common.exceptions import NoSuchElementException
    

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

    【讨论】:

      【解决方案3】:

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

      button = driver.find_element_by_class_name("class_name")
      
      if button.text == "Follow":
         button.click()
          
      

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

      希望这就是你的意思。

      【讨论】:

        【解决方案4】:

        您可以使用来自contextlibsuppress 以及来自selenium.common.exceptionsNoSuchElementException

        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 被捕获,您的脚本将忽略此代码块。

        【讨论】:

          猜你喜欢
          • 2020-07-25
          • 1970-01-01
          • 1970-01-01
          • 2021-03-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多