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

C# Selenium实现等待页面body类从loading变为空的方法

等待Body移除Loading类的实现方案

没问题,这事儿我熟!要实现等待body的loading类从存在变为空的逻辑,咱们有两种靠谱的方式,按需选择就行:

方法一:轮询检查(简单直接)

这种方式适合场景不复杂的情况,用setInterval定期检查body的class状态,直到目标状态出现:

function waitForLoadingEnd() {
  // 设置轮询定时器,每隔100ms检查一次
  const checkInterval = setInterval(() => {
    const body = document.body;
    // 检查body是否没有loading类
    if (!body.classList.contains('loading')) {
      clearInterval(checkInterval); // 清除定时器
      // 这里写loading结束后要执行的逻辑
      console.log('加载完成,body的loading类已移除!');
      // 比如初始化玩家物品页面的逻辑
      initPlayerItemsPage();
    }
  }, 100);

  // 可选:设置超时保护,防止无限等待
  setTimeout(() => {
    clearInterval(checkInterval);
    console.warn('等待超时,强制结束监听');
  }, 10000); // 10秒超时
}

// 调用函数开始等待
waitForLoadingEnd();

方法二:MutationObserver监听DOM变化(更优雅高效)

如果想要更高效的实现,推荐用MutationObserver,它能直接监听body的class属性变化,不用定期轮询,性能更好:

function waitForLoadingEnd() {
  const body = document.body;

  // 先检查初始状态,如果已经没有loading类,直接执行逻辑
  if (!body.classList.contains('loading')) {
    console.log('初始状态已加载完成');
    initPlayerItemsPage();
    return;
  }

  // 创建观察者实例,监听属性变化
  const observer = new MutationObserver((mutations) => {
    mutations.forEach((mutation) => {
      // 只关注class属性的变化
      if (mutation.attributeName === 'class') {
        const currentClass = body.getAttribute('class');
        // 检查是否移除了loading类
        if (!currentClass || !currentClass.includes('loading')) {
          observer.disconnect(); // 断开观察者
          console.log('加载完成,body的loading类已移除!');
          initPlayerItemsPage();
        }
      }
    });
  });

  // 配置观察选项:监听属性变化,只监听class属性
  observer.observe(body, { attributes: true, attributeFilter: ['class'] });

  // 可选:超时保护
  setTimeout(() => {
    observer.disconnect();
    console.warn('等待超时,强制结束监听');
  }, 10000);
}

// 调用函数开始等待
waitForLoadingEnd();

注意事项

  • 别忘了处理初始状态:如果页面启动时body已经没有loading类,要直接执行后续逻辑,避免无意义的等待。
  • 加上超时保护很重要,防止因为某些异常情况导致代码一直处于等待状态。
  • initPlayerItemsPage()是我假设的后续逻辑函数,你可以替换成自己的玩家物品加载初始化代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:40:26