如何在 python selenium 中停止 150 的元素列表长度上限?

How can you stop element list length cap of 150 in python selenium?

我目前正在开发一个使用 python selenium 和 chromedriver 阅读 twitch 聊天的机器人。我遇到一个问题,包含所有 twitch 聊天的元素列表在长度达到 150 个元素后冻结。这是我的一些代码缩短:

while True:
    # Scans for the class name of each chat element
    chat_messages = driver.find_elements_by_class_name(chatbox_classname)
    if len(chat_messages) > prev_chats_len:
        for chat in chat_messages[prev_chats_len:]:
            # Extract author name and message contents from element and print them
    prev_chats_len = len(chat_messages)

一旦 len(chat_messages) 达到 150,问题就开始出现。扫描不会一次检测到超过 150 个聊天元素。我以前的修复是使用 driver.refresh() 删除所有以前的聊天元素,但在这样做时,我错过了刷新期间发送的任何消息。我也尝试删除看到的聊天元素,但这也删除了新的。

这个问题有解决办法吗?我已经搜索了互联网以寻找可能的修复方法但无济于事。非常感谢任何帮助!

这似乎是 Twitch 的一个功能,而不是 Selenium 的一个错误。标准的 Twitch 聊天框元素(未弹出)的消息或行限制在 150 条左右,这意味着您不能向后滚动超过 150 条消息之前,因此您的代码可能会看到新消息但没有意识到。 Twitch 提供(并推荐)用于聊天机器人和聊天抓取的 API,但 Selenium 解决方案是这样的:

last_message = None
while True:
    # Scans for the class name of each chat element
    chat_messages = driver.find_elements_by_class_name(chatbox_classname)
    if chat_messages:
        if last_message is not None:
            try: 
                start_position = chat_messages.index(last_message) + 1
            except IndexError:
                start_position = 0
        else:
            start_position = 0
        for chat in chat_messages[start_position:]:
            # Extract author name and message contents from element and print them
        last_message = chat_messages[-1]