Selenium 环境配置

如果你做过 Web 测试的工作,那么你应该明白 Web 测试中最重要的一部分工作就是自动化测试。自动化测试,顾名思义就是让浏览器自动运行,而无需手动操作。这和我们爬虫工作原理有些相似,我们爬虫也需要让浏览器运行网址来获取我们需要的内容。所以我们今天来介绍一款自动化测试工具—— Selenium ,并将它运用到爬虫中来。

什么是 Selenium

我们首先来看看百度上搜索 selenium 的结果:

它的官网标题后面副标题是“Web Browser Automation”,什么意思?直译过来就是 Web 浏览器自动化,很直白很明显对不对?

我们再来看看官网的定义:

Selenium automates browsers. That's it! What you do with that power is entirely up to you. Primarily, it is for automating web applications for testing purposes, but is certainly not limited to just that. Boring web-based administration tasks can (and should!) be automated as well.

Selenium has the support of some of the largest browser vendors who have taken (or are taking) steps to make Selenium a native part of their browser. It is also the core technology in countless other browser automation tools, APIs and frameworks.

从这两段定义来看,大意就是 Selenium 的初衷是为 Web 应用自动化测试而生,但是它的用处不限于此,怎么使用完全取决于你。你可以用它来自动化处理一些基于 Web 的任务。各大浏览器厂商也将 Selenium 嵌入到它们的浏览器中了。Selenium 也广泛应用于其他的自动化工具、 API 和框架中。

Selenium 的环境搭建

安装 Selenium 工具包

跟其他 Python 工具包一样,有两种安装方式:一种是命令行安装:

pip install -U selenium

另一种是下载 Python 安装包文件,然后再手动安装。下载地址为 https://pypi.org/project/selenium/#files ,下载后解压压缩包,然后用命令行进入该压缩包的根目录,输入命令进行安装:

python setup.py install

个人还是比较推荐前一种安装方式,简单省心,一个命令就搞定。

安装浏览器驱动

对于 Selenium 3,要使用其功能,我们需要安装浏览器驱动。每个浏览器厂家都有自己的驱动,本文以 Chrome 浏览器为例,向大家介绍怎么安装浏览器驱动。

Chrome 的每个浏览器版本都会有对应版本的驱动, 所以我们第一步是要知道我们浏览器的版本。Chrome 浏览器的版本信息在“设置->关于 Chrome”里面可以找到,具体可以参照下图:

找到浏览器版本后,我们到 http://chromedriver.storage.googleapis.com/index.html 下载对应的 chromedriver 。以前的老版本都是2.x的版本,大家需要到网上搜一下版本对应关系。Chrome 从版本70之后就很好找了,所以建议大家将 Chrome 版本升级至最新的,驱动也好找些。

进入每个具体的 chromedriver 版本目录之后,我们可以看到下面这样的页面:

大家根据自己的操作系统,选择对应的文件下载即可。

下载完成后,解压压缩包,会得到 chromedriver 的驱动。不同的操作系统有不同的安装方式:

Windows 操作系统的安装关键步骤是:

① 把下载成功的驱动包chromedriver.exe解压出来,放在谷歌浏览器安装目录下的Application目录中(鼠标右键点击谷歌图标,选择属性,可在起始位置查看谷歌目录)。

② 然后配置系统环境变量在path中添加chromedriver.exe的路径。

③ 将chromedriver.exe放在C盘中windows文件夹下的SysWOW64,如果是32位系统则放在System32中。

④ 将chromedriver.exe放在D:\soft\python3\Scripts

笔者用的是 Mac 操作系统, Mac 系统安装驱动在网上搜索可以搜到两种方法:第一种是将 chromedriver 复制到 /usr/bin 目录下, 另一种是将 chromedriver 复制到 /usr/local/bin 目录下。

笔者采取的是第二种方案,因为第一种方案存在一个问题:Mac 对 /usr/bin 这个路径有权限的限制,即使你是 root 用户,也无法正常移动文件过去,这时,需关闭 Mac 的 SIP 方法 ,具体操作可参考:https://jingyan.baidu.com/article/e5c39bf5d13bf939d76033cf.html 。

至于网上说的将 chromedriver 驱动文件复制到 /usr/bin 或者 /usr/local/bin 后,需要在环境变量里面配置相应的目录,笔者试过不配置也没问题,当然配置了也不会出问题,所以为了省事,可以不用配置。

接下来,我们在命令行输入如下命令就可以查看我们的 chromedriver 版本了:

chromedriver --version

返回的版本号信息:

ChromeDriver 78.0.3904.11 (eaaae9de6b8999773fa33f92ce1e1bbe294437cf-refs/branch-heads/3904@{#86})

看到这个就表示 Chrome 驱动安装成功了。

现在我们来用最简单的语句测试一下,看能不能运行 Selenium:

from selenium import webdriverbrowser = webdriver.Chrome()browser.get('http://www.baidu.com/')

我们会看到弹出一个浏览器,闪了一下就消失了,同时在命令行有报错信息,报错信息的最后一行是:

selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 78

大意就是目前的 chromedriver 版本只支持 78版本的 Chrome 浏览器,直白点就是浏览器驱动和浏览器的版本不匹配,这里我的浏览器是77版本,下载的驱动是78版本,所以导致报错。

下载77版本的驱动,替换掉 /usr/local/bin 目录下的驱动,然后重新运行上面的程序,我们会发现弹出来 Chrome 浏览器窗口,并打开了百度首页,这就代表我们的程序正常运行了,我们的环境配置成功了。

总结

本节给大家简单介绍了 Selenium , 以及对应的环境配置。其中环境配置是比较繁琐的,不同的操作系统不同的机器可能会出现各种各样的问题,这也是我们技术人员最头疼的地方,大家需要耐住性子慢慢来解决。环境配置好后,后面我们就可以用 Selenium 去做一些很 Cool 的事情了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/30738.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于QFT的量子加法器的原理与实现-mindspore quantum

1 量子Fourier变换 离散Fourier变换以一一个复向量 x 0 , . . . , x N − 1 {x_0},...,{x_{N - 1}} x0​,...,xN−1​为输入,输出的数据是如下复向量 y 0 , . . . , y N − 1 {y_0},...,{y_{N - 1}} y0​,...,yN−1​: y k ≡ 1 N ∑ j 0 N − 1 x j …

Debian12.0.0更换系统语言中文到英文

6月10号,Debian12.0.0更新,想尝尝鲜,在虚拟机里安装好,想将中文改为英文,因为Terminal下输入命令,中文切换麻烦。 一、步骤如下 #1、查看当前语言环境 env | grep LANG #2、en表示语言,US表示…

ffmpeg capture decklink

确保decklink设备已经接入 lspci | grep Blackm02:00.0 Multimedia video controller: Blackmagic Design DeckLink SDI Micro 确保decklink驱动已经正确安装 lsmod | grep blackmagicblackmagic_io 2068480 2 确保ffmpeg已经启用decklink,如何配置之前的博文已经…

岩土工程监测案例:完整链条的振弦传感器、采集仪和在线监测系统

岩土工程监测案例:完整链条的振弦传感器、采集仪和在线监测系统 在岩土工程监测中,振弦传感器被广泛应用于测量土体或岩体的振动情况,以了解地震或其他振动事件对结构物或地基的影响。振弦传感器具有高精度、快速响应、易于安装和低成本等优…

C语言指针初阶+进阶(看这一篇就够了)

目录 本章重点 1. 指针是什么 2. 指针和指针类型 3. 野指针 4. 指针运算 5. 指针和数组 6. 二级指针 7. 指针数组 8. 字符指针 9.数组指针 10. 指针数组 11数组传参和指针传参 12. 函数指针 13. 函数指针数组 14. 指向函数指针数组的指针 15. 回调函数 16 指针和数组面试题的解…

c++lambda函数笔记

1、labmda函数用途: 用于简短功能函数的定义,并传递到std算法中。 2、一般函数与lambda函数比较示例 3、如何定义lambda 如下为lambda通用定义式子: [capture] (params) opt->ret{body;}; capture——捕获列表,[]为不捕获变量…

制造执行系统(MES)的核心功能是什么?

制造执行系统(MES)的核心功能是什么? 01 什么是MES 制造执行系统(MES)是一种用于监控、控制和优化制造过程的软件系统。它通过与企业资源计划(ERP)系统和自动化系统的集成,实现对生产过程的管…

基于MATLAB的无人机遥感数据预处理与农林植被性状估算

在新一轮互联网信息技术大发展的现今,无人机、大数据、人工智能、物联网等新兴技术在各行各业都处于大爆发的前夜。为了将人工智能方法引入农业生产领域。首先在种植、养护等生产作业环节,逐步摆脱人力依赖;在施肥灌溉环节构建智慧节能系统&a…

DBSyncer安装_配置postgresql和mysql_sqlserver_oracel全量增量同步---数据全量增量同步之DBSyncer001

国内做开源的大神做的,用了一下还可以,就是不能和Phoenix这种操作hbase等数据库一起用, https://gitee.com/ghi/dbsyncer#postgresql 这个是官网,下载安装非常简单,官网也有中文详细说明. 直接下载安装包: 然后解压到某个地方,主要要用unzip dbsyncer.zip -d /opt/module这样…

Docker中为RabbitMQ安装rabbitmq_delayed_message_exchange插件

Docker中为RabbitMQ安装rabbitmq_delayed_message_exchange插件 1、前言1、下载插件2、拷贝插件到RabbitMQ容器3、启用插件 1、前言 rabbitmq_delayed_message_exchange是一款向RabbitMQ添加延迟消息传递(或计划消息传递)的插件。 插件下载地址&#x…

【加强版】SAX解析XML返回对应格式的Map对象(解决元素递归嵌套)

SAX解析XML返回对应格式的Map对象_辛丑年正月十五的博客-CSDN博客 前言 上篇文章实现了xml元素节点的解析并返回了对应格式的Map对象,但是遗留了一个问题,就是当xml中的元素存在递归嵌套时就解析不了,因为qname属性会重复,导致后…

mysql 集群 MGR

mysql安装(3台服务) 1下载 wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz 2解压mysql wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz tar -zxvf…

三分钟了解Spring Boot 的启动流程

👏作者简介:大家好,我是冰点,从业11年,目前在物流独角兽企业从事技术方面工作,🍂博主正在努力完成2023计划中:以梦为马,扬帆起航,2023追梦人📝联系…

【C++篇】初识C++

友情链接:C/C系列系统学习目录 知识点内容正确性以C Primer(中文版第五版)、C Primer Plus(中文版第六版)为标准,同时参考其它各类书籍、优质文章等,总结归纳出个人认为较有逻辑的整体框架&…

KMeans+DBSCAN密度聚类+层次聚类的使用(附案例实战)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

Flink 学习二 Flink 编程基础API

Flink 学习二 Flink 编程基础API 1. 基础依赖引入 <dependency><groupId>org.apache.flink</groupId><artifactId>flink-java</artifactId><version>1.14.4</version></dependency><dependency><groupId>org.apa…

NLP——Topic Modelling

文章目录 A Brief History of Topic ModelsLatent Dirichlet Allocation &#xff08;LDA&#xff09;潜在狄利克雷分布核心思想LDA inputLDA output LDA 如何学习Sampling-based mothods 基于采样的方法Infer Topics For New Documents超参数 Variational methods 变分方法 Ev…

Linux MySQL 索引 事务 存储引擎 死锁

索引&#xff08;面试问得多&#xff09; 索引是一个排序的列表&#xff0c;包含索引字段的值和其相对应的行数据所在的物理地址 作用 加快表的查询速度&#xff0c;还可以对字段排序 如何实现的搜索加速&#xff1f; 没有索引的情况下&#xff0c;要查询某行数据&#xff0c;需…

【JS】中 ?.、??、??= 的用法和含义

今天分享几个处理空值简单的方法&#xff0c;避免使用三目运算、与或、if else时增加冗余的代&#xff0c;希望对大家有帮助。 可选链(?.) let a; let b a.?age; 含义&#xff1a; 可选链&#xff0c;只有当a存在,同时 a 具有 age 属性的时候,才会把值赋给b,否则就会将 u…

TCP的三次握手与四次挥手

TCP的三次握手与四次挥手 1.网络分层 网络分层代表硬件协议/技术特性应用层HTTP,DNS,FTP,SMTP,Telnet协议等应用程序实现的,规定应用程序的数据格式传输层TCP/UDP协议负责两主机之间的数据正确传输主机系统内核实现的网络层路由器IP协议负责地址管理和路由选择(确定对应主机)…