Selenium调用Firefox提示如下错误:
selenium.common.exceptions.WebDriverException: Message: Service ./geckodriver unexpectedly exited. Status code was: 1
这是驱动与平台不兼容导致的,需要指定对应的GeckoDriver。
Mozilla提供了linux-aarch64的版本,可以在官方发行说明页面下载。我的开发板是armv7l平台,v0.23.0之后Mozilla就不提供arm7hf版本了,需要自行构建。
如果还没有安装Rust,请先安装:
curl https://sh.rustup.rs -sSf | sh
如果安装较慢或失败,可尝试设置国内镜像源:
export RUSTUP_DIST_SERVER='https://mirrors.ustc.edu.cn/rust-static'
export RUSTUP_UPDATE_ROOT='https://mirrors.ustc.edu.cn/rust-static/rustup'
下载源码:
wget https://github.com/mozilla/geckodriver/archive/refs/tags/v0.35.0.tar.gz
可在以下页面获取最新版本:
https://github.com/mozilla/geckodriver/releases
解压并进入源码目录:
tar -zvxf v0.35.0.tar.gz
cd geckodriver-0.35.0
开始构建:
cargo build --release
交叉编译
如果需要编译为在其他平台使用的二进制文件,可交叉编译。需要注意,如果编译平台的系统版本高于运行平台,可能会无法正常运行。
例如,我在Ubuntu较新版本编译后,在Debian 10下就无法使用。
安装交叉编译工具:
sudo apt install gcc-arm-linux-gnueabihf libc6-armhf-cross libc6-dev-armhf-cross
添加环境变量:
source $HOME/.cargo/env
安装rustc目标工具链:
rustup target install armv7-unknown-linux-gnueabihf
进入源码目录,编辑config:
cd geckodriver-0.35.0
vi .cargo/config
写入以下代码:
[target.armv7-unknown-linux-gnueabihf]
linker = "arm-linux-gnueabihf-gcc"
开始编译:
cargo build --release --target armv7-unknown-linux-gnueabihf
原创文章,作者:,如若转载,请注明出处:https://ce.771633.xyz/2121.html