Python|爬虫和测试|selenium框架的安装和初步使用(一)
前言:
Python作为一门胶水语言来说,可以说是十分的优秀,什么事情都可以干,并且在某些领域还能干的非常不错,尤其是在爬虫和测试领域,该语言可以说是没有对手。
这么说的原因是因为如果你要使用爬虫爬取某些东西或者对于某些项目做一些测试工作,并且这个测试工作还是比较繁琐的时候,那么,Python可以帮助你实现完全的自动化,从而解放双手和大脑,而你并不会去考虑其它的任何语言,虽然这些功能其它语言是能够实现的,例如,测试工作,Java语言可以实现,js语言也可以实现,如果从开发效率这个维度来看的话,开发效率会是Python的几分之一甚至是十几分之一,如果从运行效率这个维度来看的话,那么,其它的语言可能会比Python快上那么一丢丢,但,who care呢?
单纯的从测试这个工作的视角来看,现在有很多的工具可以实现,例如jmeter,ab,selenium,TestDirector ,silktest,apifox,loadrunner等等工具,这些工具按类型可以分为压力测试,性能测试,功能测试等等。
那么,功能测试里selenium是比较好的一款软件了,只是它需要使用Python语言开发,使用上是有一定的难度的(接近前端的底层,完全在代码层面控制操作)
而selenium可以做压力测试,功能测试和性能测试,但主要集中在性能测试上,突出的优点是该软件由于是完全模拟人工点击,因此它的准确率是非常高的。
那么,本文将介绍如何安装部署selenium以及selenium模拟登录的一个演示,也就是一个基本的性能测试。
一,
selenium框架的架构
selenium框架可以运行在Python2或者Python3下,基本是不挑Python版本的,这一点是比较友好的地方。
其次,需要一个浏览器,比如,谷歌浏览器,Firefox浏览器,eg浏览器,IE浏览器等等,一般支持的是这四种常用的浏览器,但浏览器的版本最好是不要太高,接近用户所使用的浏览器版本即可。
最后呢,就是selenium需要浏览器的驱动,一般谷歌浏览器的驱动下载地址:CNPM Binaries Mirror 这里需要特别注意,驱动的版本和浏览器的版本最好是一致的,不能相差太大,否则selenium可能会启动报错。
如果selenium成功的启动,它将会通过驱动,打开一个浏览器的实例,并按照你代码内的定义动作进行点击或者输入,例如自动登录某个网站(这个网站可能会是你的项目的入口),当然了,随着技术的进步,高版本的selenium会在后台打开一个无头浏览器,也就是说这个浏览器你是看不到的,但它会做你定义的动作。
特别说明:
测试工作一般是在应用端,也可以理解为客户端工作(也就是b端),而百分之九十的项目是部署在Linux端(一般需要测试的项目是b/s架构的),但客户端一般都是使用Windows的,因此,selenium也主要是安装在Windows端,前面刚开始学习的时候就犯糊涂了,在Linux下安装selenium,通常是不需要这样做的。
本次实验用的Python版本是3.8.1,谷歌浏览器版本是86版本
驱动下载一定要注意是win32的
二,
Windows部署环境
非常的简单,没什么好说的,Python安装都不好意思说了,非常的简单,傻瓜化的下一步就完事。
selenium也是非常的简单,一条命令就可以了:pip install selenium ,这里只是需要注意一点,由于Python的安装包基本都是国外的,因此需要本地化处理一下:
严谨点,在资源管理器栏输入命令 :%appdata%,该命令是定位该文件夹,在此目录内新建文件夹名称为pip,在该新建文件夹内新建文本文档名称为pip.ini。写入如下内容:
[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
timeout = 6000
[install]
trusted-host=mirrors.aliyun.com
打开cmd,执行上面的安装命令pip install selenium :
注意了哈,这里安装的selenium是4.11.2版本,4.0版本以上和4.0版本以下selenium的用法是有很多差异的,本例以4.0版本以上为例,就不说4.0版本以下了
三,
运行第一个selenium,打开百度的首页
需要先把谷歌浏览器的驱动放置到Python的可执行文件同层目录下,具体步骤如下:
1,
查询Python的安装位置
2,
chromedriver_win32.zip这个文件解压出来的驱动放置到上面查询的目录下即可
3,
编写Python文件,文件内容如下:
from selenium import webdriver# 初始化浏览器为chrome浏览器
browser = webdriver.Chrome()# 访问百度首页
browser.get(r'https://www.baidu.com/')# 关闭浏览器
browser.close()
4,
cmd窗口内运行此Python文件
如果谷歌浏览器版本和驱动的版本不匹配将会报错如下:
(我是使用了114的驱动,但谷歌浏览器的版本是86,因此报错)
正常的无报错的运行:
四,
保持selenium的窗口是打开的状态
代码内增加一个无限循环:
from selenium import webdriver# 初始化浏览器为chrome浏览器
browser = webdriver.Chrome()
while 2>0:# 访问百度首页browser.get(r'https://www.baidu.com/')# 关闭浏览器
browser.close()
效果如下图:
那么这个方式是比较粗暴的,有没有优雅一些的方法呢?
from selenium import webdriver# 获取配置对象 => 什么样的浏览器就选择什么浏览器配置
option = webdriver.ChromeOptions()
option.add_experimental_option("detach", True)# 获取driver对象, 并将配置好的option传入进去
driver = webdriver.Chrome(options=option)
driver.get('https://www.baidu.com')
五,
关于谷歌浏览器和谷歌浏览器的驱动问题
首先,谷歌浏览器和它的驱动是必须要强对应的,比如,谷歌浏览器版本是版本 89.0.4389.128(正式版本) (64 位),那么,驱动应该是下图那样的
其次,是谷歌浏览器会自动更新升级,而自动更新升级是比较难以关闭的,因此,可以选择谷歌的离线安装版本,这样可以规避谷歌浏览器的自动升级,因此,本文将谷歌浏览器的离线安装包分享出来,大家根据自己情况使用:
链接:https://pan.baidu.com/s/1ba74wDCYT5TY1uocxjFyBA?pwd=kkey
提取码:kkey
OK,如果谷歌浏览器是正常安装的话,selenium会自动的找到它,如果是离线安装的,比如,我后面将谷歌浏览器安装在了桌面,这个时候自然是找不到谷歌浏览器了,怎么办呢?
代码里指定谷歌浏览器的位置:
注:需要多导一个模块,也就是第三行,第四行指定谷歌浏览器的执行文件,第五行表示程序执行完不关闭浏览器
#codding=utf-8
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.binary_location = "C:\\Users\\Administrator\\Desktop\\chrome\\Chrome-bin\\chrome.exe"
options.add_experimental_option("detach", True)
driver = webdriver.Chrome(options=options)
driver.get("http://www.baidu.com")
同时指定驱动的位置:
#注:增加第四行,变量path的值是驱动的路径,在后面的对象中引用即可。
#codding=utf-8
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
options = Options()
options.binary_location = "C:\\Users\\Administrator\\Desktop\\chrome\\Chrome-bin\\chrome.exe"
options.add_experimental_option("detach", True)
path=Service('f:\\chromedriver.exe')
driver = webdriver.Chrome(options=options,service=path)
driver.get("http://www.baidu.com")
OK,selenium暂时调试好了,下一篇文章将讲述如何实际应用此框架。
相关文章:

Python|爬虫和测试|selenium框架的安装和初步使用(一)
前言: Python作为一门胶水语言来说,可以说是十分的优秀,什么事情都可以干,并且在某些领域还能干的非常不错,尤其是在爬虫和测试领域,该语言可以说是没有对手。 这么说的原因是因为如果你要使用爬虫爬取某…...

SAP FI之定义财务年和财务年度变式(Fiscal Year Variants)
目录 前言 一、财务年度/财务年度变式 二、使用步骤 1.配置步骤 前言 本文主要介绍SAP会计年度和SAP会计年度变式。 一、财务年度/财务年度变式 财务年度可以具有与日历年相同的期间,也可以不同。中国财政年度从1月到12月,称为历年制,有…...

关于SAM中decomposed Relative Positional Embeddings的理解
关于SAM中decomposed Relative Positional Embeddings的理解。 relative positional embedding的一种实现方式是:先计算q和k的相对位置坐标,然后依据相对位置坐标从给定的table中取值。以q和k都是77为例,每个相对位置有两个索引对应x和y两个…...

1、Spring是什么?
Spring 是一款主流的 Java EE 轻量级开源框架 。 框架 你可以理解为是一个程序的半成品,它帮我们实现了一部分功能,用这个框架我们可以减少代码的实现和功能的开发。 开源 也就是说,它开放源代码。通过源代码,你可以看到它是如何…...

【华为OD机试python】阿里巴巴找黄金宝箱(IV)【2023 B卷|200分】
题目描述 一贫如洗的樵夫阿里巴巴在去砍柴的路上,无意中发现了强盗集团的藏宝地, 藏宝地有编号从0-N的箱子,每个箱子上面有一个数字,箱子排列成一个环, 编号最大的箱子的下一个是编号为0的箱子。 请输出每个箱子贴的数字之后的第一个比它大的数,如果不存在则输出-1。 输入…...

操作系统复习总结5
操作系统复习总结,仅供笔者复习使用,参考教材: 《操作系统原理》 - 何静媛编著. 西安电子科技大学出版社《操作系统考研复习指导》2024年 - 王道论坛组编. 电子工业出版社 本文主要内容为:输入输出管理; 计算机系统…...

【LeetCode】406.根据身高重建队列
题目 假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。 请你重新构造并返回输入数组…...

渗透测试漏洞原理之---【任意文件包含漏洞】
文章目录 1、文件包含概述1.1 文件包含语句1.1.1、相关配置 1.2、动态包含1.2.1、示例代码1.2.2、本地文件包含1.2.3、远程文件包含 1.3、漏洞原理1.3.1、特点 2、文件包含攻防2.1、利用方法2.1.1、包含图片木马2.1.2、读取敏感文件2.1.3、读取PHP文件源码2.1.4、执行PHP命令2.…...

day28 异常
to{}catch{} try{}catch{}的流传输 try {fis new FileInputStream("file-APP\\fos.txt");fos new FileOutputStream("fos.txt");int a ;while ((a fis.read())! -1){fos.write(a);}System.out.println(a); } catch (IOException e) {e.printStackTrace()…...

Pico使用C/C++选择使用哪个I2C控制器,以及SDA和SCL针脚
本文一开始讲述了解决方案,后面是我做的笔记,用来讲述我的发现流程和探究的 Pico I2C 代码结构。 前提知识 首先要说明一点:Pico 有两个 I2C,也就是两套 SDA 和 SCL。这点你可以在针脚图中名字看出,比如下图的 Pin 4…...

C++动态内存管理
动态内存 在C/C程序中(线程)栈空间是有限的,大部分变量使用的都是动态分配来的堆内存,这些动态申请来的堆内存是需要开发者通过代码去自行管理的。如何管理好这些动态申请来的内存,是C/C开发中的一个重点难点问题。 m…...

SpringBoot—日志
目录 日志使用日志日志级别设置日志级别设置分组指定日志文件路径日志切割归档使用第三方日志框架log4j2配置文件【分级存储】logback配置文件【分级存储】 实例代码 日志 使用日志 给controller添加日志信息 要给controller类上添加Slf4j注解,然后使用log.info(…...

如何在,Linux中安装Luajit2.*
1.文件下载The LuaJIT Project 2.将下载文件上传到对应的服务器:例如/opt 3.进入对应的文件夹 4.make PREFIX/usr/local,设置安装路径 5.make install,编译安装 6.进入安装目录,cd /usr/local/include/luajit-2.0 7.luajit -v…...

单片机-如何让数码管动态显示
数码管硬件图 1、数码管 连接 74HC245 芯片 单片机IO口输出难稳定,需要数码管与单片机连接需要增加驱动电路, 使用 74HC245 abcdefgDP并联导出 74HC245 对数码管进行驱动,P0 是输出电流 来驱动各个段的 驱动芯片 增加电阻 是为了防止电流…...

在Visual Studio 2017上配置并使用OpenGL
1 在Visual Studio 2017上配置并使用OpenGL 在GLUT - The OpenGL Utility Toolkit:GLUT - The OpenGL Utility Toolkit中点击“GLUT for Microsoft Windows 95 & NT users”,选择“If you want just the GLUT header file, the .LIB, and .DLL file…...

【C++】多态学习
多态 多态的概念与定义多态的概念构成多态的两个条件虚函数与重写重写的两个特例 final 和 override重载、重写(覆盖)、重定义(隐藏)的对比抽象类多态的原理静态绑定与动态绑定 单继承与多继承关系下的虚函数表(派生类)单继承中的虚函数表查看多继承中的虚函数表查看 菱形继承与…...

大数据之Maven
一、Maven的作用 作用一:下载对应的jar包 避免jar包重复下载配置,保证多个工程共用一份jar包。Maven有一个本地仓库,可以通过pom.xml文件来记录jar所在的位置。Maven会自动从远程仓库下载jar包,并且会下载所依赖的其他jar包&…...

自制centos7.9的wsl发行版
自制centos7.9的wsl发行版 参考:https://zhuanlan.zhihu.com/p/482538727 Windows10提供了一个wsl工具用于直接在windows上运行Linux子系统。 CentOS国内镜像下载:https://mirrors.aliyun.com/centos/ 这里选择了7.9.2009版本:https://mirr…...

使用VisualStudio制作上位机(五)
文章目录 使用VisualStudio制作上位机(五)第四部分:GUI界面数据显示使用VisualStudio制作上位机(五) Author:YAL 第四部分:GUI界面数据显示 这一部分,主要实现GUI的界面显示。 上一文已经实现了CAN数据的接收,并将数据更新到数组里。所以在做界面的显示时,只需要在…...

ChatGPT在医疗领域可应用于改善与患者的沟通
注意:本信息仅供参考,发布该内容旨在传递更多信息的目的,并不意味着赞同其观点或证实其说法。 自从ChatGPT在2022年末对公众开放以来,OpenAI的这款生成式AI聊天机器人在医疗领域展示出了巨大潜力。它已经通过了美国医学执照考试&a…...

直播预告|博睿学院第四季即将开讲:博睿数据资深运维团队现身说法!
博睿学院第四季开讲啦!本季博睿学院的课程将于本周四(8月31日)16点正式启动。本季我们邀请到了博睿数据平台支撑中心的四位资深运维专家现身说法,来为我们分享一体化智能可观测平台Bonree ONE的实践干货。 他们,见多识…...

端到端自动驾驶综述
End-to-end Autonomous Driving: Challenges and Frontiers 文章脉路 Introduction 从经典的模块化的方法到端到端方法的一个对比, 讲了各自的优缺点, 模块化的好处是各个模块都有自己明确的优化的目标, 可解释性较强, 且容易debug, 缺点是各个模块优化的目标并不是最终的驾…...

mysql索引、事务、存储引擎
一、索引 索引的概念: 索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于C语言的链表通过指针指向数据记录的内存地址)。使用索引后可以不用扫描全表来定位某行的数据,而是…...

【CMU15445】Fall 2019, Project 2: Hash Table 实验记录
目录 实验准备实验测试 实验准备 官方说明:https://15445.courses.cs.cmu.edu/fall2019/project2/ 实验测试 Task 1: mkdir build cd build make hash_table_page_test ./test/hash_table_page_testTask 2: make hash_table_test ./test…...

PMP证书是不是烂大街了?
大家都知道,PMP证书是项目管理领域的金字招牌。近年来,随着项目管理的重要性日益凸显,越来越多的人开始关注和学习PMP证书。无论是企业招聘还是个人职业发展,PMP证书都成为了一张炙手可热的敲门砖。 那么,PMP证书到底…...

Mac下Docker Desktop安装命令行工具、开启本地远程访问
Mac系统下,为了方便在terminal和idea里使用docker,需要安装docker命令行工具,和开启Docker Desktop本地远程访问。 具体方法是在设置-高级下, 1.将勾选的User调整为System,这样不用手动配置PATH即可使用docker命令 …...

Java实现根据商品ID获取京东商品详情数据,1688商品详情接口,1688API接口封装方法
要通过京东的API获取商品详情数据,您可以使用京东开放平台提供的接口来实现。以下是一种使用Java编程语言实现的示例,展示如何通过京东开放平台API获取商品详情: 首先,确保您已注册成为京东开放平台的开发者,并创建一…...

element-plus指定el-date-picker的弹出框位置
此处记录一下,通过popper-options指定popper出现的位置...

游戏陪玩语音聊天系统3.0商业升级独立版本源码
首发价值29800元的最新商业版游戏陪玩语音聊天系统3.0商业升级独立版本源码 1、增加人气店员轮播 2、优化ui界面丨优化游戏图标展示丨优化分类展示 3、增加动态礼物打赏功能 4、增加礼物墙功能 增加店员满足业绩,才能升级功能 5、增加店员等级不同,…...

TCP/IP网络江湖武艺传承:物理层与通信江湖的幕后(物理层中篇:物理层与现代通信技术)
目录 〇、引言:进入现代通信技术的江湖 一、数字信号与模拟信号:传承与差异...