docker 中使用 selenium + chrome 出现 chrome 崩溃的解决办法

docker 中使用 selenium + chrome 对网页进行测试,当并发加大后,很可能会出现 chrome 崩溃的情形。出现诸如一下的错误提示:

chrome not reachable
chrome tab crashed
chrome page crashed
...

出现 chrome 崩溃的原因是: docker 默认的共享内存 /dev/shm 只有 64M 当启动多个 chrome 实例后,就不能分配,导致 chrome 崩溃。
解决此问题的方法就是增大 /dev/shm,在启动container的时候,加上参数 --shm-size=1g,这样就没有问题了。

在Linux上使用selenium截图,需要安装selenium和对应的浏览器驱动。以使用Chrome浏览器为例,可以按照以下步骤操作: 1. 安装Chrome浏览器和ChromeDriver驱动: ``` # 安装Chrome浏览器 sudo apt-get update sudo apt-get install -y google-chrome-stable # 下载对应版本的ChromeDriver驱动并解压 wget https://chromedriver.storage.googleapis.com/88.0.4324.96/chromedriver_linux64.zip unzip chromedriver_linux64.zip ``` 2. 安装selenium: ``` pip install selenium ``` 3. 编写Python脚本,使用selenium打开网页并截图: ```python from selenium import webdriver # 创建Chrome浏览器实例 driver = webdriver.Chrome('./chromedriver') # 打开网页 driver.get('https://www.baidu.com') # 截图并保存 driver.save_screenshot('baidu.png') # 关闭浏览器 driver.quit() ``` 在Docker使用selenium实现截图,可以使用selenium/standalone-chrome镜像,该镜像已经集成了Chrome浏览器和ChromeDriver驱动,可以直接使用。按照以下步骤操作: 1. 拉取selenium/standalone-chrome镜像: ``` docker pull selenium/standalone-chrome ``` 2. 运行容器: ``` docker run -d -p 4444:4444 selenium/standalone-chrome ``` 3. 在容器执行Python脚本,使用selenium打开网页并截图: ```python from selenium import webdriver # 创建Chrome浏览器实例 driver = webdriver.Remote('http://localhost:4444/wd/hub', desired_capabilities=webdriver.DesiredCapabilities.CHROME) # 打开网页 driver.get('https://www.baidu.com') # 截图并保存 driver.save_screenshot('baidu.png') # 关闭浏览器 driver.quit() ``` 注意,在容器执行Python脚本时,需要将Chrome浏览器实例的地址指定为http://localhost:4444/wd/hub。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值