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

Selenium运行数小时后超时:元素可见可点击仍无法定位

问题分析与解决方案

先修正XPATH语法错误

你写的XPATH //[@id="perk_target_4"]/div[2]/div[1]/div 存在语法问题,// 后需要指定元素类型(用*代表任意元素即可),正确写法应为 //*[@id="perk_target_4"]/div[2]/div[1]/div。不过你前一小时能正常运行,说明这个错误未触发(或浏览器兼容了错误写法),但仍建议修正。

长时间运行后定位失效的核心原因及解决办法

  • 定位器依赖不稳定的层级/动态ID
    游戏页面在长时间运行后,可能因动态刷新、加载新内容改变DOM层级,或者perk_target_4这类ID是动态生成的(后续可能变为perk_target_5)。建议更换为更稳定的定位方式,比如结合元素的class和文本:

    # XPATH结合class与文本定位
    gold_btn = wait.until(EC.element_to_be_clickable((By.XPATH, '//div[contains(@class, "button_blue") and text()="Protein hapları"]')))
    # 或用CSS选择器定位
    gold_btn = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'div.button_blue.pointer')))
    
  • 元素被动态加载进iframe
    部分游戏会在运行过程中插入iframe,将按钮类元素移入其中。Selenium默认在主文档查找元素,自然无法定位。可添加iframe检查并切换上下文:

    # 遍历所有iframe,尝试切换后查找元素
    for iframe in driver.find_elements(By.TAG_NAME, 'iframe'):
        try:
            driver.switch_to.frame(iframe)
            gold_btn = wait.until(EC.element_to_be_clickable((By.XPATH, '//div[contains(@class, "button_blue") and text()="Protein hapları"]')))
            break
        except TimeoutException:
            driver.switch_to.default_content()
    # 操作完成后切回主文档
    driver.switch_to.default_content()
    
  • 浏览器内存过载导致DOM异常
    脚本运行一小时后,浏览器内存占用过高可能引发DOM渲染异常,导致Selenium无法正确识别元素。可定期重启浏览器驱动,比如每运行50次循环重启一次:

    loop_count = 0
    while True:
        loop_count +=1
        # 你的业务逻辑代码
        if loop_count % 50 == 0:
            driver.quit()
            # 重新初始化驱动
            driver = webdriver.Chrome()
            # 重新执行登录/进入游戏页面的逻辑
    
  • 元素可见但被透明层遮挡(不可点击)
    游戏可能在按钮上层添加透明加载遮罩,肉眼无法察觉,但Selenium会判定元素不可点击。此时可通过JS直接触发点击:

    gold_btn = wait.until(EC.visibility_of_element_located((By.XPATH, '//div[contains(@class, "button_blue") and text()="Protein hapları"]')))
    driver.execute_script("arguments[0].click();", gold_btn)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:32:10