Linux无图形界面环境使用Python+Selenium实践

本文涉及的产品
云服务器ECS,u1 2核4GB 1个月
云服务器 ECS,u1 4核16GB 1个月
云服务器 ECS,u1 4核8GB 1个月
简介: 【5月更文挑战第1天】Linux无图形界面环境使用Python+Selenium实践

简介:  在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云主机场景,实现自动化测试或者网页数据抓取。这些工具的组合提供了一个可靠且高效的解决方案。

目录
相关文章
|
2天前
|
Python
Pycharm为Python项目配置环境不生效,解决办法
在PyCharm中,项目依赖配置更改后未生效。解决步骤包括:1) 查找`C:\Users\username\AppData\Roaming\JetBrains\PyCharm2022.2\options\jdk.table.xml`,2) 删除`<jdk></jdk>`标签内的旧配置内容,然后重启PyCharm以应用新目录。
8 0
Pycharm为Python项目配置环境不生效,解决办法
|
20小时前
|
NoSQL Linux 开发工具
【Linux】Linux环境基础开发工具_6
【Linux】Linux环境基础开发工具_6
5 0
|
20小时前
|
小程序 Linux 开发工具
【Linux】Linux环境基础开发工具_5
【Linux】Linux环境基础开发工具_5
4 0
|
20小时前
|
小程序 Linux 开发工具
【Linux】Linux环境基础开发工具_4
【Linux】Linux环境基础开发工具_4
5 0
|
20小时前
|
Linux 开发工具 C语言
【Linux】Linux环境基础开发工具_3
【Linux】Linux环境基础开发工具_3
3 0
|
20小时前
|
Linux Shell 开发工具
【Linux】Linux环境基础开发工具_2
【Linux】Linux环境基础开发工具_2
3 0
|
20小时前
|
Linux 开发工具 C语言
【Linux】Linux的权限_2 + Linux环境基础开发工具_1
【Linux】Linux的权限_2 + Linux环境基础开发工具_1
5 0
|
4天前
|
数据可视化 网络协议 Linux
Linux 怎样通过win 远程桌面连接链接Linux后台服务器的可视化图形界面
Linux 怎样通过win 远程桌面连接链接Linux后台服务器的可视化图形界面
10 0
|
1天前
|
Linux
Linux如何快速执行历史命令
Linux如何快速执行历史命令
16 8
|
2天前
|
SQL 关系型数据库 数据库
深入探索Linux中的pgawk命令
`pgawk`是`awk`的扩展,带有对PostgreSQL的支持,允许在`awk`脚本中执行SQL查询,简化文本与数据库交互。它保持了`awk`的全部功能,且高效传输数据。使用时,可以通过参数如`-d`、`-h`、`-p`、`-U`和`-W`指定数据库连接详情。示例中展示了如何结合`pgawk`和`psql`从文本文件获取销售数据并联查数据库获取客户名称。在使用时要注意安全连接、优化SQL、测试验证和版本兼容性,以实现有效且安全的数据处理。