当ChromeDriver使用Selenium翻转1800-1900页时,显示SBOX_FATAL_MEMORY_EXCESSED错误

问题描述

driver_t = webdriver.Chrome()
driver_t.implicitly_wait(5)
driver_t.get(Company intranet)

elem = driver_t.find_element_by_id("j_username")
elem.clear()
elem.send_keys(".....")
elem = driver_t.find_element_by_id("j_password")
elem.clear()
elem.send_keys(".....")
driver_t.find_element_by_id("frm-ok").click()
driver_t.maximize_window()


page_counter = 0  ***#10 items in 1 page, WHEN TURN PAGE ABOUT 189, ERROR HAPPEN***
while True:
    els = driver.find_elements_by_xpath("//table[@id='flexme1']/tbody/tr")
    cnt = len(els)
    if not cnt:
        print(time.asctime(), "This page has no orders.")
        break

    page_counter = page_counter + 1
    print(time.asctime(), "Page Counter: ", page_counter)

    oi_l = craw.fetch_order_info(driver)

    for i in range(1, cnt + 1):
        last_id, od_l = craw.fetch_order_detail(driver, last_id, i)

    page_down = "//form[@name='frmList']/div[5]/div[2]/ul/li[9]/a"
    elem = driver.find_element_by_xpath(page_down)
    class_name = elem.get_attribute('class')
    if "disable" in class_name:
        print(time.asctime(), "Task finished.")
        break

    elem.click()

当outter循环运行约150-200次时,Chrome崩溃。

如何解决此问题? 有人说铬保持着一份深厚的历史清单,这是答案吗?


解决方案

此错误.

.表示Chrome中存在巨大的内存消耗问题,导致选项卡崩溃,并出现SBOX_FATAL_MEMORY_EXCESSED错误。


深潜

根据文章SBOX FATAL MEMORY EXCEEDED constantly and chrome is using large amounts of memory,在以下所有情况下都会发现Chrome消耗大量内存的问题:

  • Google Chrome版本80.0.3987.132(官方版本)(64位)
  • Google Chrome版本82.0.4083.0(官方版本)(64位)
  • Google Chrome版本82.0.4085.4 Canary(64位)

在安装了ESET NOD32 Antivirus 13.0.24.0时,通常与windows-10系统一起使用。


Chrome高内存消耗快照:

Chrome高内存使用率快照:

根据Eset consumes major memory w/ Chrome在ESET安全论坛中的文章:

Eset nod AV 13.0.24.0和13.1.16.0以及Chrome的主要问题:由于在Canary和Dev频道上Chrome都更新到了82.0.4083(之后是最新的82.0.4085.4),几乎所有站点(特别是Gmail)的Chrome(>8 GB)都存在巨大的内存消耗问题,导致选项卡崩溃并出现SBOX_FATAL_MEMORY_EXCESSED错误。删除nod可以解决问题,重新安装它会重新创建它,依此类推。Chrome Canary和Dev 82.0.4077.0中没有此问题。


解决方案

根据ESET支持文章KB3415,最有效的解决方案是在ESET Windows Home产品中启用预发布更新。步骤:

  • 启用预发布更新以解决您的产品问题。
  • 切换回定期更新。

tl;dr

我们已在讨论中详细讨论了此问题ESET causing excessive renderer memory usage,并且该问题已从队列中删除。

相关文章