Selenium基础用法

2023-10-26

目录

一.概念和自己的理解

二.安装

三. 浏览器驱动

四.正真的基础上场 

1.先要打开浏览器,打不开,我们后面也就做不了,万事开头先有前提

2.获取元素的方法

3.操作元素

4.浏览器操作

5.鼠标操作 

6.键盘操作

7.下拉框操作

8.页面滚动

9.警告框处理

10.切换frame

11.切换窗口

12.截图

13.cookie

14.最后一个等待,终于要结束了

五.最终小结 最后有惊喜

一.概念和自己的理解

概念:是一个用于web程序测试的工具,中文:晒

自己的理解:其实就是利用各种元素对网页程序进行操作,用自动操作替代了人的手工操作,如果对网页操作的情况下,手工和自动操作起来没什么区别的本质,建议还是手工操作,谁也不想写代码。

二.安装

小伙伴们既然都开始做selenium了,自然PyCharm还有环境搭建,配置环境变量都已经下载好配置好了,这些我就不多讲了,要是这些还没弄好的话上b站上找找python安装视频,跟着来就行了。

第一步:创建好新项目,点击终端Terminal

第二步:在终端输入pip install selenium,点击回车就ok了

拓展知识:

删除selenium:pip uninstall selenium

查看selenium的版本以及其他信息:pip show selenium

三. 浏览器驱动

这个非常重要,没有驱动的话就没有效果。

我自己理解的传输流程:selenium脚本写好传给浏览器驱动driver 一个请求,然后由driver给浏览器下达指令,浏览器就知道该干什么,浏览器执行完返回一个结果到driver,再由driver把结果传给python。

每个浏览器的驱动都不一样,并且驱动下载的版本一定要和浏览器的版本对应,下面是谷歌driver的下载地址,别的浏览器小伙伴们自己找吧

谷歌driver镜像地址

现在我这的最新版本是99,99后面的小数都是大版本里迭代的小版本

大部分小伙伴的电脑应该都是windows系统吧,那就选win32,64位的也选32,都是兼容的,不用的担心。

linux就选linux。Mac有两种,如果你的处理器为M1就选M1的,不是就选另一个

有两种使用驱动的方法

第一种:配置环境变量

鼠标右击我的电脑,点击属性------点击右侧的高级系统设置-----点击系统属性弹出框下面的环境变量----找到Path,用户变量和系统变量的Path都可以,把自己下好的驱动添加进去就行了。这样以后在python里用selenium就不用添加驱动了,既然配置了环境变量了,他就会帮我们在电脑里寻找驱动。

我用的是win10

第二种:觉得配置环境变量麻烦的可以直接把下载好的驱动文件复制到自己的项目文件下,随时可以拿来用

 

四.正真的基础上场 

 selenium基础的使用方法我几乎都会讲到,如果有遗漏的话请在评论区告诉我,谢谢咯。

1.先要打开浏览器,打不开,我们后面也就做不了,万事开头先有前提

我的注释里有解释,后面的的解释也有一大部分在注释里,理解一下。

2.获取元素的方法

find_element_by_id() ——  根据id获取元素,常用

find_element_by_xpath() ——根据xpath获取元素,常用。如果不知道xpath的值怎么写,找到元素右键,copy里就能复制xpath,太方便了

find_element_by_class_name() ——根据类名获取元素,常用

find_element_by_css_selector() ——根据选择器获取元素,class的前面要加.(英文的点),id的前面要加#(应该叫它井号吧)

find_element_by_name() ——根据那么获取元素

find_element_by_tag_name()——根据标签名获取,一般不用,一个网页中大部分标签都有重复的

find_element_by_link_text()——根据a标签的文本获取元素,文本必须一字不差

find_element_by_partial_link_text()——根据a标签的文本获取元素,文本可以模糊查询,例如:www.baidu.com的文本为百度,查询时写个百就可以了,会根据写的百自动查找

下面演示一遍怎么获取的,不常用的我就不演示了,学习吗,也不一定全学,要取之精华,去其糟怕。也不是糟粕,就是不常用而已。

上面我写的方法的写法已经被弃用了,我将用新的写法演示,为什么我用上面写的旧的写法呢,新的写法我觉得跟不上旧的写法直观,写博客吗,一定要先考虑小伙伴们看不看得懂,看不看的舒服为首要。虽然弃用了但是还可以用,只是运行时有警告而已,我是从开发转测试的,做开发时就容不得半点红色的东西,会开发的懂得都懂,就不多说了。

 这里要讲一下,不经意出错的小地方。

第一个:百度一下按钮的类名其实是bg s_btn,bg后面是空格不是.(英文点),但是你要写到selenium中你就得去点空格换成.(英文点),这就是规矩。

第二个:复制qq空间链接xpath,粘贴的时候要放到双引号里面,xpath路径里所有的双引号都要换成单引号,这样才可以。

求生欲:这里我就写了三种方法,只是我自己比较常用的,是我自己!!!并不是大众承认的,我求生欲还是比较高的。

3.操作元素

这个时候你脑子应该马上闪一下,很快就想到,不就是点击、输入等等这些操作。不错,这脑子没白闪一下,想对了。

操作的关键词:

click:点击

send_keys:输入

clear():清除全部

size:获取元素的大小

text:获取元素的文本内容

get_attribute():获取元素的属性值

is_displayed():判断元素是否可见

is_enabled():判断元素是否可用

常用的大家也都知道,浏览器吗无非就是点一点,输一输。

上实例:

大家觉着这样对吗,确实是点击了,是输入了,但总缺点东西啊。给你们30秒中想一想。很快吭,时间飞速流逝。

当然是缺元素了,大部分网页的输入框、按钮、链接,不只一个吧,你写成这样他怎么知道你要点哪个、输哪个,再说这代码本就是错的,sorry啊有点尴尬。

 上正确实例:

也就是获取元素代码.后面的,一举两得

 4.浏览器操作

浏览器咋操作呢,浏览器顾名思义你得浏览,如果浏览器太小看不见,你得巨大化吧;浏览器卡了你得刷新吧;如果你女朋友查看你浏览器,你得马上关闭浏览器吧,要是我呢我直接删历史,但我怕我忘了我也不舍得删啊。

maximize_window:浏览器巨大化

set_window_size:设置浏览器页面的分辨率

set_window_position:设置浏览器的位置

back():后退

forward():前进

refresh():刷新

close():关闭当前页面

quite():关闭浏览器

title():获取当前页面的title

current_url():获取当前页面的url

还是一样拿出几个来举个栗子:

5.鼠标操作 

没鼠标没灵魂。

要想用鼠标操作先要实例化对象,运用ActionChains,导包

实例化对象

操作:

context_click:鼠标右击

double_click:双击

drag_and_drop:拖动

move_to_element():悬停

上实例操作:

最后一定要加上perform,不加的话不会执行。

因为点击的很快,显示的不明显,但看到新闻的条数到了从1-5变到了12-17,太快了,大家理解一下

6.键盘操作

没有一个好的键盘,游戏怎么能打出高超的技术呢

先导包

操作:

必须有:send_keys()

括号里:Keys.键盘按键

这里就写了俩常用的代表

(Keys.CONTROL,"引号里面就写英文字母了"):例如:复制(Keys.CONTROL,"c")

(Keys.BACKSPACE):删除,还有一个BACK_SPACE这俩一样

上实例:

7.下拉框操作

下拉框,选择不止在表面

下拉框和下面警告框处理的网页是b站一个博主学习资料的网页

先导包

操作:

select_by_index:通过select标签下的option标签的索引定位,一般索引都从0开始

select_by_value:通过option的属性value来定位

select_by_visible_text:通过option的文本定位

上实例:

这种有下拉框的页面不大好找,但是要是想找的的话也不难,一些管理系统里就有很多。但这个我觉得不常用,所以了解一下就好了。

 8.页面滚动

页面滚动,下面的内容可能更精彩

8-1.设置滚动的起始位置和滚动到的最终位置

winddow.scrollTo(起始位置,最终位置)

8-2.driver驱动通过execute_script下达指令 

 9.警告框处理

都警告你了,你就不要再看了,懂得都懂。

9-1.想要处理警告框,先要选择它

alert=driver.switch_to.alert

9-2.利用创建的对象alert进行操作

 send_keys:在警告框中写字

 dismiss:取消警告框

 accept:确定警告框

 text:获取警告框的文本

上实例:

 10.切换frame

我最喜欢的一个操作,没学到这个的时候,登录输入框按和按钮就是获取不到,巨烦,一度让我认为它真是个小可爱。

有可能有些小伙伴找不到在浏览器控制台找不到frame标签。先选择输入框,输入框的元素代码出来了往上找找,有个iframe标签就是了。

切换frame:

driver.switch_to.frame(frame元素)

上实例,拿网易邮箱做例子。:

为了更直观的理解,先运行个没选择frame失败和选择frame的做对比。

很明显没有获取到,输入框name的属性

 切换到frame:

我们的异常捕获还在,如果获取不到,肯定输出 "那应该是没选择frame了",显然没输出,那就获取到了,小伙伴们如果还不确定,下面的视频,用户名输入框里已自动填入****************

 11.切换窗口

 来回切换窗口,在摸鱼的边缘反复横跳。

11-1.我要是没说错的话,大部分或是所有页面应该都有一个a标签,a标签里都有一个target属性

它的值有四种:

我自己的理解:

_self:在当前窗口打开一个新的窗口,替代了前一个窗口

_blank:新建了一个窗口,前一个窗口还存在

下面两种我没打见过,上面俩种我比较常见,所以不大理解下俩种

W3C上的解释:

_top:在父框架集中打开被链接文档。

_parent:在整个窗口中打开被链接文档。

11-2.这次的窗口切换就是关于值为_blank的,在操作新窗口的时候必须先选择这个窗口,才能进行操作

获取窗口:

window_handle:获取所有的窗口名称

current_window_handle:获取单个窗口名称

选择窗口:

switch_to.window(窗口)

上实例:

还是网易邮箱为例,但是这次要从别的页面打开网易邮箱,使浏览器打开一个新的窗口

第一次还是先写一个没切换窗口的,看看能否获取新窗口的元素,好对比。

很明显控制台输出了"窗口没切换",看来没获取到

 这次上切换窗口的实例:

控制台只输出了窗口名称,没有输出“窗口没切换”,证明获取到了。小伙伴不确定的话,下面视频到最后用户名输入框也输入了**********,证明确实新窗口的元素被获取到了。

 12.截图

这个相当简单,初入职场,截图快捷键还不知道是啥,你老板让你截图,你都不知道咋弄还得去开始程序里找,当场社si。现在都微信:ALT+a,QQ:CTRL+ALT+a的时代了

直接上代码,效果不是强,不上视频了

就一行代码,上面是截图,下面代码

 13.cookie

cookie,干开发的应该懂得很多

我自己的理解:简单的来说,你在浏览器留下的信息,被存储下来了。举个例子:百度登录,你在浏览器登录百度,下次你再打开浏览器的时候,不用登陆,就已经登上了,因为你的cookie一直没有删掉。

第一步:浏览器控制台,点network

第二步:刷新一遍浏览器,往上找应该是第一个

在Headers里找Request Headers请求头,里面就有cookie,不是Response Headers响应头

 

 上代码

注意:你取的cookie一定要使登录后的cookie

  14.最后一个等待,终于要结束了

不容易终于到最后一个了--等待--为啥最后一个讲等待呢,因为对于等待我也不是很了解

三种等待方法:

强制等待:time.sleep(秒数),初学阶段最喜欢用的等待方法,导个包加个几秒等待旧ok了,相当简单,但是这种方法不稳定,不能准确保证代码能正常执。例如:打开一个网页一秒就够了,你设3秒,这是浪费时间;打开一个网页需要3秒,你设了1秒等待,就获取不到浏览器的元素,就无法进行下面的操作。

显示等待:导包还要导俩,这就很麻烦。我一直没理解这种等待,还是等评论区的大神教我吧

隐式等待:implicitly_wait(秒数)。他就是循环。列如你设置了10秒,每半秒重新查找一次,如果10秒内查找成功,那就往下执行了,如果超过10秒还没查找到,那就报错了。

五.最终小结 最后有惊喜

如果大家这样看不舒服的话,我用xmind做了一个整理,就不用大家动手记笔记了。

百度云盘链接:https://pan.baidu.com/s/18ONAMj0tJHCtmCE1ygyVTA 
提取码:ljh6

希望大家能给我提意见,多评论多点赞!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Selenium基础用法 的相关文章

随机推荐

  • 微信小程序如何使用websocket

    在智能手机时代 无不体现着小程序的必要性 WeChat小程序作为目前最受欢迎的小程序平台之一 已成为很多人的首选开发平台 那么如何使用websocket来开发一个WeChat小程序呢 今天我们就来一起探讨一下 首先 让我们回顾一下WebSo
  • Matlab中数值类型(二)

    目录 单精度运算 创建双精度数据 转换为单精度 创建单精度零和一 算术运算和线性代数运算 用于处理单精度或双精度的一个程序 整数 整数类 创建整数数据 整数类的算术运算 整数类的最大值和最小值 整数运算 加载整数信号数据 对数据绘图 处理数
  • Python常用模块总结

    Python常用模块总结 os模块 os remove 删除文件 os unlink 删除文件 os rename 重命名文件 os listdir 列出指定目录下所有文件 os chdir 改变当前工作目录 os getcwd 获取当前文
  • 制作跟文件系统时出现的一些错误

    在make busybox的时候出现如下错误 arm none linux gnueabi libc usr include linux netfilter h 44 error field in has incomplete type a
  • 微信小程序——点击列表里某元素,实现跳转+显示点击元素的内容

    最近刚刚学微信小程序没多久 碰到了很多问题 这也是我碰到的一个问题 思路 跳转 组件绑定一个点击事件 在事件里面实现跳转 显示点击元素的内容 获取点击元素在列表里面的id 但是我发现我获取到的id是空的 啥也没有 呜呜呜 可怜的小白 都不知
  • Ubuntu下安装man中文手册(中英文共有)

    安装步骤 1 先安装所需要的依赖包 automake 工具 sudo apt get install autoconf automake libtool git 工具 sudo apt get install git 2 下载中文man安装
  • 自学Mysql-存储过程--判断和循环语句

    case 用case解决传入的值是否是数字 CREATE PROCEDURE test case num int out flag varchar 20 BEGIN case num 类似于swtich when num gt 0 then
  • android recycleview 没有填满屏幕

    最近使用recyclerview 每次绘制的item 虽然写的是填充父控件 但是每次效果都是包裹内容 没有填满手机屏幕 后来才意识到是填充子view的时候出现了问题 没有填满屏幕的时候 你可以试着在item view的主布局设置一个back
  • GBase 8c亮相国内首款金融数据库性能测试工具开源发布会

    2 月 17 日 由信通院主办的国内首款金融数据库性能测试工具开源发布会在线上召开 会上 定位于国家高端专业智库 产业创新发展平台的信通院宣布开源该测试工具 并详细阐述了开源此工具的背景 初心 历程以及愿景 南大通用受邀参加此次发布会 GB
  • 用for语句算15的阶乘

    x 1 for i in range 1 16 i从1依次取到15 x x i print x
  • webrtcvad 安装失败

    倒腾了两个小时终于解决了这个问题 所有办法都试了 只有这个管用 下载安装VC 不要下载那种在线安装的 我试了很多次 都是安装包丢失或损坏 直接复制下面链接去下载 百度网盘链接 https pan baidu com s 1IaqkukMzb
  • 我的个人博客

    经过几天鼓捣 我的个人博客终于建成了 为了提高网站安全性我把http协议升级成了https的 带有传输加密的协议能保证传输的安全而且可以防止篡改网站的网页 网站的访问速度也不能慢 为此我有花费了一些精力配置了CDN 现在通过https ww
  • es数据量过大,内存撑不住,关闭部分历史数据索引,以及备份删除索引

    关闭索引命令 curl XPOST http ip 9200 索引名称 close 恢复索引命令 curl XPOST http ip 9200 202205 open 遇到问题索引权限问题关闭失败 type cluster block e
  • 12.话题消息的定义与实现

    学习视频 https www bilibili com video BV1zt411G7Vn p 12 目标 消息的自定义 发布及订阅个人信息 一 自定义话题信息 1 定义msg文件 mkdir catkin ws src learning
  • OkHttp:基本使用详解

    简介 OkHttp是一个高效的HTTP客户端 它有以下默认特性 支持HTTP 2 允许所有同一个主机地址的请求共享同一个socket连接 连接池减少请求延时 透明的GZIP压缩减少响应数据的大小 缓存响应内容 避免一些完全重复的请求 当网络
  • TypeError: test_recharge() missing 1 required positional argument: ‘item‘

    提示test recharge 缺少一个必须的位置参数 item 说明是item有问题 debug后 发现item没有出现用例中的数据 再看是发现没有写 ddt 写上去就好了
  • CorelDraw X4 unable to load resource dll_七夕小子_新浪博客

    CorelDraw X4以前安装过 现在重新安装后 运行时 弹出几个对话框 Unable to load resource dll CRLUTLINTL dll Unable to load resourse DLL CrlCmnMappe
  • java中让控制台输出彩色字符的方法-Jansi

    在网上有很多类似的文章 教你如何在控制台输出彩色字符 其中比较好的方法是用别人的做好的包 Jansi 但是在网上很多的文章没有给出完整的操作过程 只是给出了方法 在这里将会有完整的过程 1 下载jnsi包 http maven outofm
  • 【报告分享】ChatGPT:AI模型框架研究.pdf(附下载链接)

    省时查报告 专业 及时 全面的行研报告库 省时查方案 专业 及时 全面的营销策划方案库 免费下载 2023年2月份热门报告合集 限时免费 ChatGPT4体验 无需翻墙直接用 ChatGPT团队背景研究报告 ChatGPT的发展历程 原理
  • Selenium基础用法

    目录 一 概念和自己的理解 二 安装 三 浏览器驱动 四 正真的基础上场 1 先要打开浏览器 打不开 我们后面也就做不了 万事开头先有前提 2 获取元素的方法 3 操作元素 4 浏览器操作 5 鼠标操作 6 键盘操作 7 下拉框操作 8 页