You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium的click()方法此前运行正常,数小时后点赞操作无响应问题

Instagram自动点赞脚本失效排查及修复方案

核心问题原因

  • 定位到的fr66n元素是外层容器,真正可交互的点击目标是内部的button/svg节点,直接点击外层容器不会触发点赞事件
  • 存在遮挡元素:登录提示、Cookie授权弹窗、保存登录信息弹窗未关闭,导致点击事件被拦截
  • Selenium旧版定位API不稳定,动态渲染场景下元素未完全可交互就触发点击
  • 额外引入BeautifulSoup解析属性增加冗余逻辑,容易出现属性读取偏差
  • 逻辑判断存在漏洞:next_picture方法找不到元素时返回0,但continue_liking中判断条件为next_el != False,0和False布尔值等价,会导致流程异常

修复步骤

  1. 新增前置弹窗处理逻辑,保证操作无遮挡
    启动浏览器后优先关闭所有可能遮挡操作的弹窗,示例逻辑:
# 加入到Interact类中,在word_search执行后调用
def close_popups(self):
    # 关闭Cookie弹窗
    try:
        cookie_btn = self.browser.find_element(By.XPATH, '//button[text()="允许全部Cookie"]')
        cookie_btn.click()
        time.sleep(1)
    except:
        pass
    # 关闭登录提示弹窗
    try:
        login_close = self.browser.find_element(By.XPATH, '//button[@aria-label="关闭"]')
        login_close.click()
        time.sleep(1)
    except:
        pass
  1. 重写点赞逻辑,用Selenium原生API操作,降低不稳定因素
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 修改后的like_pic方法
def like_pic(self):
    wait = WebDriverWait(self.browser, 10)
    # 等待点赞容器加载完成
    like_container = wait.until(EC.presence_of_element_located((By.CLASS_NAME, "fr66n")))
    # 定位内部可点击的按钮节点
    like_btn = like_container.find_element(By.TAG_NAME, "button")
    # 直接用Selenium读取aria-label属性,不需要BeautifulSoup
    svg_aria = like_btn.find_element(By.TAG_NAME, "svg").get_attribute("aria-label")
    if svg_aria == "Like":
        # 等待元素可点击再触发点击
        wait.until(EC.element_to_be_clickable(like_btn)).click()
    time.sleep(2)
  1. 修正next_picture返回值
    将找不到元素时的返回值从0改为False,匹配后续判断逻辑。

优化建议

  • 加入随机等待时间,不要固定使用2秒间隔,避免被Instagram反爬策略识别为自动化操作
  • 优先用aria-label属性定位元素,Instagram的动态class会不定期更新,属性定位稳定性更高

内容的提问来源于stack exchange,提问作者adassoul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 23:15:11