.net core ChromeDriver linux docker中Selenium工具配置的的问题以及解决方案

10 篇文章 0 订阅
5 篇文章 0 订阅


前言

本文主要是针对在.netcore linux docker 中 Selenium 配置。

使用步骤

1.在服务端安装chrome浏览器,也就是在docker 内部创建chrome浏览器。我这边是配置的CICD,自己重新打个带chrome的镜像基础包.

代码如下:

docker  run -it mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim /bin/bash #创建。netcore一个默认的容器并进入
apt-get update
apt-get -y install wget
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb #有时候链接不上,多试几次 (实在不行手动下载拷贝到容器内)
apt-get install ./google-chrome-stable_current_amd64.deb

经过半小时的安装完成了。

google-chrome-stable -version

Google Chrome 90.0.4430.93

2.下载对应版本的chromedriver并安装

浏览器是Google Chrome 90.0.4430.93 下载基本差不多的http://npm.taobao.org/mirrors/chromedriver/90.0.4430.24//chromedriver_linux64.zip
将chromedriver 解压到 /usr/bin

wget https://registry.npmmirror.com/binary.html?path=chromedriver/100.0.4896.60/chromedriver_linux64.zip
unzip -d /usr/bin chromedriver_linux64.zip

查看chromedriver 版本

chromedriver -v

3.将容器打包成镜像

docker commit -a="simple" -m="added chrome based on .netcore3.1" 28a66ebccd55 dotnetcore-with-chrome:v3.1
 ChromeOptions options = new ChromeOptions();
                options.AddArguments("lang=zh_CN.UTF-8");
                //不显示浏览器,无头模式
                options.AddArgument("--headless");
               // 禁用图片
                //options.AddUserProfilePreference("profile.default_content_setting_values.images", 2);
                // GPU加速可能会导致Chrome出现黑屏及CPU占用率过高,所以禁用
                options.AddArgument("--disable-gpu");

                //options.AddArgument("window-size=1024,768");
                options.AddArgument("--no-sandbox");//一定要加,不然的话报错Starting ChromeDriver 2.36.540471 (9c759b81a907e70363c6312294d30b6ccccc2752) on port 35058
                  driver.Navigate().GoToUrl(BaseUrl);

dockerfile:
在这里插入图片描述

总结

遇到的坑

1,开始不知道mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim 基础系统是Debian ,yum装不上。 应该用 apt-get

2,wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb #有时候链接不上。

3,请求报错Starting ChromeDriver 2.36.540471 (9c759b81a907e70363c6312294d30b6ccccc2752) on port 35058。加上 options.AddArgument(“–no-sandbox”)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值