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

Selenium读取Discord频道消息耗时过长问题排查与优化

Discord频道消息读取延迟排查与优化

我在操作Discord频道时,使用以下代码循环读取消息元素:

List<org.openqa.WebElement> ret = driver.findElement(By.tagName("main")) // driver = WebDriver
            .findElements(By.tagName("li"))
            .stream()
            .filter(message -> message.getAttribute("id") != null
                    && message.getAttribute("id").contains("chat-messages"))
            .toList();

页面默认显示约40条消息,但每次读取耗时5-6秒,这个延迟完全无法接受。我知道当无匹配元素时findElements会触发隐式等待,但本次每次都能返回元素,因此想排查延迟原因并找到优化方案。

第一次优化尝试

根据建议,我简化了定位逻辑,改用XPath直接匹配元素:

List<WebElement> ret = driver.findElements(By.xpath("//main//li[contains(@id,'chat-messages')]"));

起初看似速度有所提升,但很快发现这只是临时现象,实际耗时仍和之前一致。

最终排查与解决方案

经过调试后发现,driver.findElements本身耗时不到20毫秒,真正导致5-6秒延迟的是读取所有返回元素的远程WebElement属性的操作。

针对这个问题,我重构了代码:不再读取所有消息元素的属性,仅获取findElements返回结果中最后一条消息的属性,并记录其时间戳,后续通过该时间戳识别新消息。调整后,读取延迟问题得到解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:20:35