Selenium 环境配置

news2024/12/22 17:20:08

如果你做过 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 的事情了!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTTPS加密

目录 HTTPS加密1.加密和解密2.对称加密3.非对称加密4.中间人攻击5.证书 HTTPS加密 1.加密和解密 1.明文: 要传递的原始信息。 2.密文: 经过加密后的信息。 3.加密就是指将明文(要传输的信息)按照指定的方式进行变换,生成密文。 4.解密…

Pytest+selenium+allure+Jenkins自动化测试框架搭建及使用

一、 环境搭建 1. Python下载及安装 Python可应用于多平台包括windows, Linux 和 Mac OS X, 本文主要介绍windows环境下。你可以通过终端窗口输入 "python" 命令来查看本地是否已经安装Python以及Python的安装版本。 如未安装python, 推荐下载python 3.8.3以…

Android——事务处理(续)(十三)

1. 长按事件 1.1 知识点 &#xff08;1&#xff09;掌握长按事件的操作形式&#xff1b; &#xff08;2&#xff09;可以设置手机的桌面背景&#xff1b; 1.2 具体内容 范例&#xff1a;长按一张图片之后&#xff0c;此图片设置为手机桌面背景。 <LinearLayout xmlns:a…

LocalDateTime 和 LocalDate 与 date 有什么区别;LocalDateTime 示例,LocalDate 示例

目录 1 LocalDateTime 和 LocalDate 与 date 有什么区别2 LocalDateTime 示例&#xff1a;2 LocalDate 示例&#xff1a; 1 LocalDateTime 和 LocalDate 与 date 有什么区别 LocalDateTime、LocalDate和Date是 Java中不同的类库中用于表示日期和时间的类&#xff0c; 它们在功…

「Java核心技术大会 2023」6月重磅启动,邀你共同探讨Java生态

前言 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 &#x1f4d7;本文收录于恒川的日常汇报系列&#xff0c;大家有兴趣的可以看一看 &#x1f4d8;相关专栏C语言初…

《机器学习公式推导与代码实现》chapter13-LightGBM

《机器学习公式推导与代码实现》学习笔记&#xff0c;记录一下自己的学习过程&#xff0c;详细的内容请大家购买作者的书籍查阅。 LightGBM 就GBDT系列算法的性能而言&#xff0c;XGBoost已经非常高效了&#xff0c;但并非没有缺陷。LightGBM就是一种针对XGBoost缺陷的改进版…

【C++11】 列表初始化 auto 范围for 新增关键字 新增容器

文章目录 1 列表初始化2 auto && 范围for3 新增关键字3.1 decltype3.2 default3.3 delete3.4 final与override 4 总结 1 列表初始化 由c语言的规则我们知道&#xff1a;一般只有数组才会支持用{}初始化&#xff0c;但是C11新语法规定我们不仅可以用{}初始化各种对象(内…

企业微信 创建应用后如何构造网页授权 获取token 获取用户信息

第一次对接企业微信&#xff0c;上网找了各种方案。 目的是在企业微信中&#xff0c;公司发给员工一个地址&#xff0c;员工点开后打开画面&#xff0c;在这个画面上可以获取到这个员工的userid&#xff08;后续功能操作就是各自不同的功能了哈&#xff0c;就不详细说了&#…

STM32F4_触摸屏

目录 1. 触摸屏原理 2. 电阻式触摸屏检测原理 3. 电容式触摸屏检测原理 4. 硬件配置 4.1 XPT2046驱动芯片 4.2 硬件设计 5. 代码详解 5.1 main.c 5.2 AT24C02.c 5.3 AT24C02.h 5.4 C_Touch_I2C.c 5.5 C_Touch_I2C.h 5.6 Touch.c 5.7 Touch.h 5.8 FT5206.c 5.9 …

ADAudit Plus:保护企业内部IT安全的强大解决方案

随着企业数字化的推进&#xff0c;IT系统和数据安全变得比以往任何时候都更加重要。为了保护企业的机密信息和敏感数据&#xff0c;企业需要一种可靠的IT安全解决方案。在众多选项中&#xff0c;ADAudit Plus是一款备受赞誉的软件&#xff0c;为企业内部的IT安全提供了强大的支…

Python入门自学进阶-Web框架——36、Web微信类实现初步

打开页面&#xff0c;会出现一个二维码&#xff0c;要使用手机微信扫一扫&#xff0c;才能登录。它的实现原理是什么&#xff1f; 下图为打开网页版微信登录的调试工具网络信息&#xff0c;定时发送请求&#xff0c;状态待处理&#xff08;pending&#xff09; 上图的挂起是pe…

网络安全|渗透测试入门案例分析,从零基础入门到精通—登录框页面的快速渗透常用检测手段

目录 引言 1、弱口令 2、万能密码绕过 ​编辑 3、登录认证绕过 3.1.令牌刷新端的错误配置 3.2. 错误的sso配置 3.3.CMS个例的访问问题 3.4.JWT Token的错误解析 3.5.暴力修改Authentication 4、图形验证码不失效 5、短信验证码不失效 6、短信攻击 7、反射型跨站脚…

【MySQL数据库】MySQL 高级SQL 语句二

MySQL 高级 SQL 语句二 一、连接查询1.1 inner join&#xff08;内连接&#xff09;1.2 left join &#xff08;左连接&#xff09;1.3 right join(右连接) 二、CREATE VIEW ---- 视图三、 UNION - - 连集3.1 UNION3.2 UNION ALL 四、交集值&#xff08;取两个SQL语句结果的交集…

经典:商业智能BI解读,值得收藏

关注新闻的朋友们可能注意到了&#xff0c;最近这段时间关于数据要素、数字经济、数字化转型的相关行动越来越多&#xff0c;一方面是各级政府的政策规划以及大规模的发展行动&#xff0c;另一方面是则是各行各业的企业开始探寻数字经济&#xff0c;通过数字化转型进行改革&…

angular学习笔记

目录 1、认识Angular![在这里插入图片描述](https://img-blog.csdnimg.cn/17fe3ec067b64d75bf9d24a4e71403ed.png)2、路由2.1、路由懒加载2.2、路由守卫 3、模版指令4、生命周期4.1、父子生命周期 5、依赖注入6、RXJS7、自定义事件&#xff0c;自定义指令8、自定义管道9、获取d…

内网渗透(八十八)之委派攻击

委派 委派是大型网络中经常部署的应用模式,给多跳认证带来了很大的便利与此同时也带来了很大的安全隐患。利用委派,攻击者可结合其他漏洞进行组合攻击,导致攻击者可获取本地管理员权限甚至域管理员权限,还可以制作深度隐藏的后门。 委派是指将域内用户的权限委派给服务账…

【Adversarial Attack in Object Detection】物理对抗攻击和防御

目录 安全监控 **有无意义**无意义的补丁有意义的补丁 光学对抗攻击对抗灯干扰相机成像 攻击方法White-box attacksGradient-based attacks Optimization-based attacks Black-box attacksQuery-based attacksEvolution algorithm OUTLOOK 在计算机视觉中&#xff0c;根据实现…

征服Go世界,御剑江湖!学习路线与顶级资源一网打尽

引言 Go语言&#xff08;也称为Golang&#xff09;是一种开源的编程语言&#xff0c;由Google开发。它具有简洁的语法、高效的并发性能和良好的内存管理&#xff0c;因此在近年来迅速获得了广泛的关注和采用。本文将为您提供一条学习Go语言的路线图&#xff0c;并介绍一些优质…

二分查找 - 数据结构和算法教程

二分查找被定义为在排序数组中使用的一种搜索算法&#xff0c;它通过重复将搜索间隔分成两半来实现。二分查找的思想是利用数组被排序的信息&#xff0c;将时间复杂度降低到O&#xff08;log N&#xff09;。 在数据结构中应用二分查找的条件 数据结构必须排序。访问数据结构的…

mac为什么读取不了NTFS格式硬盘,Tuxera NTFS for Mac 2022 读写ntfs移动硬盘插件

使用 Mac 的巨大痛点之一&#xff1a;移动硬盘只能打开文件&#xff0c;但是无法写入新的资料。有人说格式化硬盘&#xff0c;改成苹果的 macOS扩展格式&#xff0c;但是原先硬盘的数据要转移&#xff0c;而且拿到 Windows 系统里无法被识别。 有人说格式化硬盘&#xff0c;改…