Linux无图形界面环境使用Python+Selenium实践 (转载)

原文链接:https://developer.aliyun.com/article/1511623

简介:  在Linux上使用Selenium和Python来控制浏览器进行自动化测试或者网页数据抓取是常见的需求。本文将介绍如何在Linux无图形界面环境下使用Selenium与Firefox浏览器以headless模式运行,并提供geckodriver、Xvfb和pyvirtualdisplay等工具的安装步骤。

Selenium是一个自动化测试工具,它可以模拟用户在浏览器中的操作,例如点击、输入文本、验证元素等。selenium官网介绍:

selenium支持多种浏览器/驱动程序(Firefox,Chrome,Internet Explorer)以及远程协议。下表是各浏览器对应的驱动。

本篇以Firefox为例

-- 先安装geckodriver:

geckodriver是Firefox浏览器的驱动程序,用于与Selenium通信。可以通过以下步骤在Linux上安装geckodriver。访问geckodriver的GitHub页面https://github.com/mozilla/geckodriver/releases,下载适合您系统的压缩包。如果使用其他浏览器对应上表下载对应浏览器驱动。

解压下载的文件,并将geckodriver可执行文件所在的目录加入系统的PATH变量。

或者直接move到bin目录:mv geckodriver /usr/bin

-- 安装firefox

yum install gtk3
wget http://releases.mozilla.org/pub/firefox/releases/116.0.3/linux-x86_64/zh-CN/firefox-116.0.3.tar.bz2
tar jxpvf firefox-116.0.3.tar.bz2
sudo ln -s /root/firefox/firefox /usr/bin/firefox

-- 安装selenium

在python环境下安装:pip install selenium

-- 安装Xvfb

Xvfb是一种虚拟的X窗口服务器,可以模拟图形界面。

Ubuntu使用以下命令安装Xvfb: sudo apt-get install Xvfb

如果是centos:

sudo yum search Xvfb
根据搜索结果找到合适的安装包,通常命名为xorg-x11-server-Xvfb
sudo yum install xorg-x11-server-Xvfb.x86_64

-- 安装pyvirtualdisplay

pyvirtualdisplay是一个Python库,用于在无图形界面环境下触发Xvfb。

使用以下命令安装pyvirtualdisplay:

pip install EasyProcess
pip install xvfbwrapper
pip install pyvirtualdisplay

-- 编写Python脚本测试

现在可以编写一个Python脚本来使用Selenium和Firefox浏览器进行自动化测试或网页数据抓取。以下是一个简单的示例:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from pyvirtualdisplay import Display
# 创建一个虚拟显示 
display = Display(visible=0, size=(1280, 768))
display.start()
# 配置Firefox选项 
firefox_options = Options()
firefox_options.headless = True # 以headless模式运行,具体代码如下:
 # 创建Firefox 
browser = webdriver.Firefox(options=firefox_options)
# 在这里编写您的代码,例如访问网页、操作元素等
query = 'Selenium的使用'
url = f"https://cn.bing.com/search?q={query}"
browser.get(url)
title = browser.title
print("Page title: ", title)
browser.save_screenshot('screenshot1.png')
# 关闭WebDriver和虚拟显示 
browser.quit()
display.stop()

在这个示例中,我们首先创建一个虚拟显示,然后配置Firefox选项,将其设置为headless模式。然后,创建一个Firefox WebDriver实例,通过它可以直接与浏览器进行交互。在最后,关闭WebDriver和虚拟显示。

保存Python脚本尝试运行。可以看到浏览器访问bing搜索页面的title,同时生成了搜索页面的屏幕截图。

以headless模式运行selenium,可以不显示浏览器窗口,适合Linux云主机场景,实现自动化测试或者网页数据抓取。这些工具的组合提供了一个可靠且高效的解决方案。

posted @   rebeca8  阅读(278)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2023-12-04 BGP学习之路
点击右上角即可分享
微信分享提示