firefox+geckodriver+selenium在centos上运行服务器内存溢出
geckodriver
WebDriver for Firefox
项目地址:https://gitcode.com/gh_mirrors/ge/geckodriver
免费下载资源
·
背景:
写的selenium脚本在服务器1上执行正常,因为特殊原因需要迁移到另外一台服务器2上执行,firefox+geckodriver+selenium+python的版本都是一样,脚本也一致,但是在服务器2上执行却发现机器内存一直在减少,直至挂掉
使用的环境版本:
Python 3.6.7
Firefox 68.6.0esr
geckodriver 0.26.0
selenium 3.141.0
脚本demo:
原因:
最后排查出原因时因为机器1和机器2的centos的版本不一样,机器1是centos6,机器2是centos7。所以能兼容使用的firefox+geckodriver版本也不一样
这是两个机器的版本截图
出现内存溢出是因为一直在刷这个log(调用geckodriver的时候报错了),导致内存溢出
目前定位的原因是:这个centos7驱动和firefox的版本不配备,firefox 68 无法使用headless,执行firefox --headless无法使用。
然后74的版本在这个驱动上-headless没有问题,但是geckodriver 这个驱动74的版本没法用,只能选择70以下的firefox版本,但是70以下的firefox版本在centos7上跑不了headless
根据mozilla官方的图,但是根据上面的版本下载下来不靠谱
解决:
总之,最后各种尝试下,选择了低版本的组合,具体如下(主要是Firefox和geckodriver的版本匹配):
Python 3.6.8
Mozilla Firefox 57.0.4
geckodriver 0.19.1
selenium 3.141.0
脚本也需要改,demo:
#!/usr/bin/python3
from selenium import webdriver
from pyvirtualdisplay import Display
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
import time
import tempfile, os.path as path
from selenium.webdriver import PhantomJS
display = Display(visible=0, size=(2048,1024))
display.start()
#log_path = path.join(tempfile.mkdtemp(), 'ghostdriver.log')
binary = FirefoxBinary('/usr/bin/firefox/firefox')
driver = webdriver.Firefox(firefox_binary=binary)
#driver = PhantomJS(service_log_path = log_path)
urls=['url1','url2','url3','url4']
for url in urls:
print('开始循环',url)
driver.get(url)
time.sleep(3)
print('等待3秒结束')
print(driver.title)
driver.quit()
GitHub 加速计划 / ge / geckodriver
7.07 K
1.51 K
下载
WebDriver for Firefox
最近提交(Master分支:2 个月前 )
53fea8f4
2 个月前
f911bb4c
7 个月前
更多推荐
已为社区贡献1条内容
所有评论(0)