安装selenium3模块
pip3 install selenium
如果上面的命令因为网络问题,重试多次仍失败,可以尝试下面的命令
pip3 install selenium -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

配置selenium相关的环境
下载并安装最新的Chrome版本
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
yum -y install google-chrome-stable_current_x86_64.rpm
检查安装的Chrome版本
which google-chrome-stable
/bin/google-chrome-stable
使用下面的命令得到Chrome的版本号
google-chrome-stable -version
Google Chrome 81.0.4044.113

使用下面的命令查看帮助

/bin/google-chrome-stable --help

下面对应的ChromeDriver版本,从下面的地址
https://sites.google.com/a/chromium.org/chromedriver/downloads
下载
wget https://chromedriver.storage.googleapis.com/81.0.4044.69/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
cp -f chromedriver /usr/bin/
chmod 755 chromedriver
确保chrome和chromedriver版本一致,并且chromedriver的安装位置,需要在python代码中使用

运行测试demo
python3 selenium_demo.py

#!/usr/bin/env python3
#encoding: utf-8
#description: 测试程序控制并驱动Chrome 81
#note:需要安装selenium3,chromedriver和Chrome版本兼容
#date: 2020-04-21from selenium import webdriverif __name__ == '__main__':options = webdriver.ChromeOptions()options.add_argument('--headless')options.add_argument('--disable-gpu')options.add_argument('--no-sandbox')url = 'https://www.baidu.com'browser = webdriver.Chrome(executable_path="/usr/bin/chromedriver", options=options)browser.get(url)print(browser.page_source)browser.quit()

这个python脚本,使用selenium去远程获取指定url的网页源码并打印出来。

关于selenium模块中webdriver各API的使用方法,参见下面的链接

https://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.action_chains

遇到的问题
1.chromedriver下载速度非常慢

解决方法: 测试发现,需要翻墙才能下载速度快,可以从我的ThinkPad T420的Chrome上翻Q下载该文件,再从虚拟机上下载ThinkPad T420的文件。

2.centos7中Chrome通过selenium截图汉字显示为方框
解决方法:在执行截图任务的虚拟机上安装中文字体,比如这里我选择的是最爱的文泉驿微米黑字体,执行下面的命令

wget http://rpmfind.net/linux/centos/7.7.1908/os/x86_64/Packages/wqy-microhei-fonts-0.2.0-0.12.beta.el7.noarch.rpm
rpm -ivh wqy-microhei-fonts-0.2.0-0.12.beta.el7.noarch.rpm
安装完成之后,直接可以看到字体已经安装成功了。
fc-list :lang=zh
然后打开中文网页就不会乱码了。

3.采用selenium自带截图工具截取的Grafana看板的图片截取不完全

解决方法:经过网上调研和测试发现,能否成功截取全屏,与网页代码的使用有一定关系。试过各种招儿之后,都未能圆满解决,最后我实在没撤了,硬着头皮研究了Grafana页面的代码,发现里面有个唯一的div具有清晰的width和height,直接获取它的值就能大致确定整个截图的大小,从而巧妙解决了这个问题。

找到这个唯一关键的div,并且有尺寸大小,发现只有这个元素的height是真实的
<div class="react-grid-layout layout" style="height: 1590px;">

经过测试,发现下面的方法是可行的, 但是有时候执行不稳定
ele = browser.find_element_by_class_name("react-grid-layout.layout")
print(ele.size)

对于普通的网页,使用常规思路就可以了。具体问题具体分析吧。下面以豆瓣首页截取全屏为例,给出一个具有普遍意义的代码selenium_douban.py实现如下:

#!/usr/bin/env python3
#encoding: utf-8
#description: 实现selenium+chromedriver+python实现豆瓣的全文截取,实测有效
#date: 2020-04-22from selenium import webdriver
import timeoptions = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--dns-prefetch-disable')
options.add_argument('--no-referrers')
options.add_argument('--disable-gpu')
options.add_argument('--disable-audio')
options.add_argument('--no-sandbox')
options.add_argument('--ignore-certificate-errors')
options.add_argument('--allow-insecure-localhost')driver = webdriver.Chrome(options=options)
driver.get('http://www.douban.com')
width = driver.execute_script("return Math.max(document.body.scrollWidth, document.body.offsetWidth, document.documentElement.clientWidth, document.documentElement.scrollWidth, document.documentElement.offsetWidth);")
height = driver.execute_script("return Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight);")
print(width, height)
driver.set_window_size(width + 100, height + 100)
time.sleep(5)
driver.save_screenshot('douban.png')
driver.close()

得到的效果图如下:

在CentOS 7.7 x86_64上安装python3的selenium 3模块实录相关推荐

  1. 在CentOS 7.7 x86_64上安装python3.7.7

    由于Centos 7原本就安装了python2,而且这个python2不能被删除,因为有很多系统命令,比如yum都要用到. [root@VM_105_217_centos Python-3.6.2]# ...

  2. 在CentOS 7.7 x86_64上安装python3.11.0实录

    整个安装过程基本上参照原来的博文 https://blog.csdn.net/tao_627/article/details/105674448 但是这里有新的注意点就是,ssl使用了新的openss ...

  3. 在CentOS 6.5 x86_64上安装libunwind的问题

    1.事由 当时间进入2021年,之前的对CentOS 6.x上的官方依赖仓库和国内镜像仓库都不好使了,如果要安装软件包,是一个痛苦的事情.今天我在一台CentOS 6.5的老机器上安装ats的rpm包 ...

  4. 在CentOS 6.8 x86_64上安装ATS 6.2.1实录

    我的博客上已经有很多这样的ats安装实录了,这次的笔记有些不一样,因为它是ATS目前最新的LTS版本6.2.1的安装,写出来更多的是整理自己的思路,因为很多东西搞过不整理,过一段时间就完全忘记掉了. ...

  5. 在CentOS 6.6 x86_64上安装SystemTap/Perf+FlameGraph玩转火焰图实录

    下面是我结合网上资料摸索出的可行的操作方法,记录在这样,以备后面继续研究.操作系统是CentOS 6.6 x86_64. 1.将内核版本升级到最新版 因为我机器上CentOS 6.6的内核版本号是2. ...

  6. 在CentOS 6.8 x86_64上安装nghttp2最新版及让curl具有http2特性

    nghttp2是什么? nghttp2是一个实现IETF官方HTTP/2和HPACK头压缩算法的C库,但不限如此,在C库基础上,还实现了http2的客户端,服务器,代理服务器,以及压测工具.参见官网链 ...

  7. 在CentOS 6.8 x86_64上安装nginx 1.10.3

    本文档记录了完全使用最新源码来编译安装nginx最新版1.10.3,所有的依赖也是最新的,便于第三方nginx模块开发 假定使用root身份安装 目前最新的源码地址汇总 ftp://ftp.csx.c ...

  8. 在CentOS 7.7 x86_64上安装InfluxDB 1.8.0实录

    在InfluxDB官网获取最新稳定版的下载和安装指导 wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.0.x86_64.rp ...

  9. 在CentOS 6.9 x86_64上安装nginx 1.12.2

    比较详细的教程参见以前的博文 http://blog.csdn.net/tao_627/article/details/60957521 这里只给出简略步骤,没有截图,自始至终使用root操作 目前最 ...

最新文章

  1. 一些关于iText和iTextSharp的旧闻(some old news about iText and iTextSharp)
  2. Jquery中使用select2插件实现ajax实时请求数据
  3. redis集群关闭 启动报错_使用虚拟机搭建 Redis 集群,实现数据库的负载均衡功能。...
  4. Hibernate的fetch
  5. string类的常用函数
  6. js弹出窗口关闭当前页面,而不弹出提示框
  7. Golang的调度模型
  8. matlab中符号对象的数据类型是,符号对象(Symbolic Object)的使用
  9. Linux 中的FHS文件系统风格标准---File Hierarchy Standard
  10. Node Introduce
  11. 影响宝宝脾胃健康的3个“真凶”,难怪孩子脾胃总是调不好!
  12. mysql got signal 11_mysqld got signal 11问题定位
  13. 安装SQL 2000 企业版
  14. python 视频文件格式和分辨率转换
  15. pytorch-psenet实现 并训练自己的数据集
  16. iphone/ios兼容问题
  17. 关于拉流端ts时间切片问题导致的直播黑屏问题
  18. spring 自带的定时器task
  19. 【读书】-你是人间四月天
  20. SAP中MIGO子功能配置介绍

热门文章

  1. 宏使用 Tricks
  2. linux - centos yum安装LAMP环境
  3. Linux内核分析——可执行程序的装载
  4. java.util.concurrent包API学习笔记
  5. C++查找算法(更新中)
  6. 计算机函数模式的用处是啥,请问怎么理解计算机中的函数?
  7. cygwin编译verilator_Windows 安装 verilator
  8. sublime python配置_sublime python环境配置
  9. 无监督学习与有监督学习的本质区别是什么_人工智能中的无监督学习
  10. oracle 复制 mysql_MySQL与Oracle之间互相拷贝数据的Java程序