我拥有最新版本的驱动程序(chromedriver = 2.44.609551),硒包(3.141.0)和(无头chrome = 70.0.3538.110)。 (在Windows上)
我正在使用浏览器打开多个窗口。 使用firefox,我的脚本总是很快。但是在chrome上,切换到窗口(已加载页面)后,当我尝试从浏览器获取任何内容(例如driver.page_source或任何find_element)时,出现了4s延迟。
我做错什么了吗?
[driver.execute_script('window.open(arguments[0]);', url) for url in urls]
for window in driver.window_handles[1:]:
driver.switch_to.window(window)
driver.page_source #it takes 4s here
driver.find_elements_by_class_name('class_name') #regular speed here (fast)
break
如果我用driver.page_source
切换driver.find_elements_by_class_name('class_name')
,第一个总是很慢。
答案 0 :(得分:2)
正如您在问题中提到的, GeckoDriver / Firefox 的组合要比 ChromeDriver / Chrome 快值得一提的是,不同的浏览器以不同的方式呈现HTML DOM。
您可以在Chrome & Firefox on Windows vs Linux (selenium)
中找到详细的讨论此外,通过 Chrome Headless 会议,围绕不可预测的 CPU 和内存消耗进行了大量讨论。
根据讨论Building headless for minimum cpu+mem usage,可以通过以下方式优化CPU +内存使用率:
requestAnimationFrame
和animation triggers
),但是我们期望有很多CPU可以节省的钱。用法可以是:
$ headless_shell --remote-debugging-port=9222 --trace-startup=*,disabled-by-default-memory-infra http://www.chromium.org
铬总是会使用尽可能多的资源。如果要有效限制其利用率,则应考虑使用cgroups