linux 安装浏览器和驱动
1、火狐浏览器及驱动-centos6 64
-
火狐浏览器-在centos6.10自带,而且浏览器版本为52版本
-
下载对应的火狐驱动,52版本-对应0.17版本-查看地址
-
查看火狐的版本
firefox -V
-
添加到环境变量
# 解压 tar -zxvf geckodriver-v0.17.0-linux64.tar.gz # 新建文件夹 mkdir /usr/local/seleniumdriver # 移动到文件夹 mv geckodriver /usr/local/seleniumdriver # 编辑/ect/profile文件 vim /etc/profile # 在文件最后添加 export PATH=$PATH:/usr/local/seleniumdriver # 保存退出运行 source /etc/profile # 运行geckodriver -V geckodriver 0.17.0
注意:运行项目最好放在英文目录下
2、火狐浏览器及驱动-centos7 64
-
火狐默认的版本为60版本(在线安装命令
yum -y install firefox
) -
使用0.19的火狐驱动,解压保存在/usr/local/seleciumdriver 文件夹中
-
添加到/etc/profile文件中
# 编辑文件 vim /etc/profile # 浏览器驱动 export PATH=$PATH:/usr/local/seleniumdriver # 保存退出运行 source /etc/profile # 运行geckodriver -V geckodriver 0.19.0
-
运行时,可以通过当前目录生成geckodriver.log 文件查看error
-
以root用户运行直接运行:
python 123.py
报错:
selenium.common.exceptions.WebDriverException: Message: Process unexpectedly closed with status: 1
坑点:这通过查看geckodriver.log可以发现:
1565086641745 geckodriver INFO geckodriver 0.19.0 1565086641748 geckodriver INFO Listening on 127.0.0.1:56020 1565086641834 mozrunner::runner INFO Running command: "/usr/lib64/firefox/firefox" "-marionette" "-profile" "/tmp/rust_mozprofile.3LBcykrEU73V" Running Firefox as root in a regular user's session is not supported. ($XDG_RUNTIME_DIR is /run/user/1000 which is owned by admin.)
上面错误,不支持在普通用户的会话中以root身份运行Firefox。解决方法:切换到其他用户执行即可。
-
测试代码
import time from selenium import webdriver driver = webdriver.Firefox() driver.get("http://www.baidu.com") time.sleep(3) driver.quit()
在远程服务器直接运行没问题,但是在win10 pycharm进行远程运行时报错:
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
两个问题:1、无法发现火狐驱动 2、使用远程连接时(使用pycharm或者其他连接工具xshell均是如此),是默认连接无界面的linux,导致无法启动,可以修改代码为:
import time from selenium import webdriver # 设置为无头模式 profile = webdriver.FirefoxOptions() profile.add_argument("-headless") # 指定火狐的目录 driver =webdriver.Firefox(executable_path="/usr/local/seleniumdriver/geckodriver",options=profile) driver.get("http://www.baidu.com") print(driver.page_source) time.sleep(3) driver.quit()
重点1:目前发现部署测试项目到linux有界面的服务器上,需要添加无头模式以及指定驱动位置
重点2:在VM中的有界面linux,登录上去之后,直接运行则无需(添加无头模式以及指定驱动位置两个操作),所以也可以用win连接linux桌面,再进行执行代码即可
重点3:本来部署有界面的服务器,就是为了能在服务器跑,同时有界面的运行更加符合预期,所以尝试结合jenkins进行操作,就是以本地用户在进行操作
-
3、谷歌浏览器及驱动的安装-centos7 64
- 下载 谷歌浏览器下载
- 下载文件名为rpm结尾安装包-google-chrome-stable_current_x86_64.rpm
- 输入命令进行安装
yum localinstall google-chrome-stable_current_x86_64.rpm
- 安装的版本为:Google Chrome76.0.3809.87 (正式版本) (64 位)
- 安装驱动,同上步骤,寻找对应的版本进行解压,放置在/usr/local/seleciumdriver 文件夹中
- 刷新权限
source /etc/profile
- 验证
chromedriver --version
- 运行代码即可。