1、安装python3+selenium

# 安装python3
yum install python3 python3-pip
ln -sf /usr/bin/python3 /usr/bin/python
ln -sf /usr/bin/pip3  /usr/bin/pip

# 解决yum源的问题
sed -i '1s#/usr/bin/python$#/usr/bin/python2#' /usr/bin/yum
sed -i '1s#/usr/bin/python$#/usr/bin/python2#' /usr/libexec/urlgrabber-ext-down

# 在线安装selenium
pip install selenium

# 离线安装selenium
# 先在一台外网服务器上下载好离线依赖包
pip download -d ./packs selenium
# packs打包上传到内网服务器上安装
pip install --no-index --find-links=file:./packs selenium

2、安装chromedriver 116.0.5845.96

下载地址:https://koji.fedoraproject.org/koji/buildinfo?buildID=2274364image.png

# 安装依赖、中文字体
yum install mesa-libOSMesa-devel gnu-free-sans-fonts wqy-microhei-fonts

# 安装chromedriver和chromium
yum localinstall chrom*rpm

3、浏览器截图测试

#!/usr/bin/python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time

driver_path = "/usr/bin/chromedriver"

chrome_options = Options()
chrome_options.add_argument('--no-sandbox')
# 指定浏览器分辨率
chrome_options.add_argument('window-size=1920x1080')
chrome_options.add_argument('--disable-gpu')
# 隐藏滚动条
chrome_options.add_argument('--hide-scrollbars')
# 不加载图片,按需打开
#chrome_options.add_argument('blink-settings=imagesEnabled=false')
# 无界面,不打开浏览器可视化界面
chrome_options.add_argument('--headless')

# 创建浏览器对象
driver = webdriver.Chrome(executable_path=driver_path, chrome_options=chrome_options)
# 访问页面
driver.get("https://www.baidu.com")
time.sleep(5)
# 保存截图
driver.save_screenshot('/root/www.baidu.com.png')
# 退出浏览器
driver.quit()

4、grafana监控大屏截图脚本

#!/usr/bin/python
# by zhangbin
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
import os

# grafana登录地址
login_url = "http://xx.xx.xx.xx/grafana/login"
# 基础设施监控大屏地址
graph1_url = "http://xx.xx.xx.xx/grafana/d/07U4Xzg7z123/5Z-656GA6K6-5pa955uR5o6n5aSn5bGP?orgId=1&kiosk"
# 机房网络监控大屏地址
graph2_url = "http://xx.xx.xx.xx/grafana/d/e83a43f1-49ae-4532-bd60-131db696293d/5py65oi_572R57uc55uR5o6n5aSn5bGP?orgId=1&kiosk"
# 截图保存文件夹
save_graph_dir = "/data/share/grafana_jietu/"
# chromedriver路径
driver_path = "/usr/bin/chromedriver"

chrome_options = Options()
chrome_options.add_argument('--no-sandbox')
# 指定浏览器分辨率
chrome_options.add_argument('window-size=1920x1080')
chrome_options.add_argument('--disable-gpu')
# 隐藏滚动条
chrome_options.add_argument('--hide-scrollbars')
# 不加载图片,按需打开
#chrome_options.add_argument('blink-settings=imagesEnabled=false')
# 无界面,不打开浏览器可视化界面
chrome_options.add_argument('--headless')

# 创建浏览器对象
driver = webdriver.Chrome(executable_path=driver_path, chrome_options=chrome_options)
# 登录Grafana
driver.get(login_url)
driver.find_element_by_name("user").send_keys("query")
driver.find_element_by_name("password").send_keys("query123")
driver.find_element_by_xpath("/html/body/div/div[1]/main/div/div/div/div[3]/div/div/div[2]/div/div/form/button").click()
time.sleep(5)
# 保存登录后的截图
driver.save_screenshot(save_graph_dir + 'login.png')

# 访问监控大屏页面1
driver.get(graph1_url)
# 设置浏览器页面缩放90%
driver.execute_script("document.body.style.zoom='0.9'")
time.sleep(30)
# 获取页面标题
title1 = driver.title
if "监控大屏" in title1:
    # 保存截图
    driver.save_screenshot(save_graph_dir + 'graph1.png')

# 访问监控大屏页面2
driver.get(graph2_url)
# 设置浏览器页面缩放90%
driver.execute_script("document.body.style.zoom='0.9'")
time.sleep(30)
# 获取页面标题
title2 = driver.title
if "监控大屏" in title2:
    # 保存截图
    driver.save_screenshot(save_graph_dir + 'graph2.png')

# 退出浏览器
driver.quit()