当Chromedriver使用Selenium翻到1800-1900页时,出现SBOX_FATAL_MEMORY_EXCEEDED错误。

问题描述 投票:0回答:1
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()

当外循环运行150-200次左右时,chrome就崩溃了,如何解决这个问题?

如何解决这个问题?有人说chrome维护了一个深层的历史列表,是这样吗?

python selenium google-chrome windows-10 selenium-chromedriver
1个回答
1
投票

这个错误....

SBOX_FATAL_MEMORY_EXCEEDED

...意味着Chrome浏览器存在巨大的内存消耗问题,导致标签页出现SBOX_FATAL_MEMORY_EXCEEDED错误。


深度挖掘

根据该条 SBOX FATAL MEMCEEDED不断,chrome使用了大量的内存。 在以下所有实例中都观察到Chrome浏览器消耗巨大内存的问题。

  • 谷歌Chrome浏览器版本80.0.3987.132(官方构建)(64位)。
  • 谷歌Chrome浏览器82.0.4083.0版本(官方构建)(64位)。
  • 谷歌浏览器82.0.4085.4金丝雀版(64位)。

多为 系统时 ESET NOD32杀毒软件 13.0.24.0 已安装。


Chrome浏览器高内存消耗的快照。

ESET

Chrome浏览器高内存占用的快照。

ESET1

根据文章 Eset消耗了Chrome的主要内存 与在ESET安全论坛。

Eset NOD AV 13.0.24.0和13.1.16.0以及Chrome浏览器的主要问题。自从Chrome更新到82.0.4083(后来的82.0.4085.4是最新的),在Canary和Dev频道上,Chrome中存在一个HUGE内存消耗问题(>8GB),在(几乎)所有网站上(尤其是gmail),导致标签页崩溃,出现SBOX_FATAL_MEMORY_EXCEEDED错误。删除NOD可以解决这个问题,重新安装回去就会重新创建,以此类推。在Chrome Canary和Dev 82.0.4077.0中没有这个问题。


解决方法

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

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

tl; dr

我们已经在讨论中详细讨论了这个问题。ESET导致渲染器内存使用过多 并且该问题已从队列中删除。

© www.soinside.com 2019 - 2024. All rights reserved.