selenium的webdriver常用方法和属性介绍(2)

图片

selenium的webdriver介绍

从selenium导入webdriver模块,在pycharm中跳转webdriver模块的__init__.py文件,内容如图所示:从selenium包的子目录中导入了很多模块并做了重命名,用于支持如下
Chrome/Edge/Ie/Firefox/Safari浏览器。

图片

使用方法类似如下:

先导入webdriver模块

from selenium import webdriver

初始化各个浏览器的webdriver类:

driver = webdriver.Chrome()
driver = webdriver.Edge()
driver = webdriver.Firefox()
driver = webdriver.Ie()
driver = webdriver.Safari()

然后使用get函数打开网页地址,比如打开百度

driver.get("https://www.baidu.com/")

web页面元素的查找方法

当打开网页后我们得先定位到网页中各个元素的位置和信息,这样selenium才能做对应的操作。

举例:打开百度网页后,通过查找元素,找到输入框和百度一下对应元素信息。

1)输入框的元素信息:<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">

图片

复制Xpath地址为://*[@id="kw"]

图片

2)百度一下按钮的元素信息:

<input type="submit" id="su" value="百度一下" class="bg s_btn">

对应Xpath为://*[@id="su"]

图片

3)通过以上元素信息我们就拿到了输入框和百度一下按钮的id信息,然后获取后输入文本和点击按钮,就完成了一次查找和点击的动作。

当然我们除了通过id获取元素,也可以通过name,xpath等方式操作,大家不妨多试下,此处不再赘述。

webdriver.WebDriver类中的常用方法

在webdriver模块中WebDriver类提供了很多方法,比如我们最常用的find_element方法用于找元素,get方法用于打开网页等,具体介绍如下:

类型

函数

作用

网页相关

get()

打开传入的URL网页地址

current_url

是一个属性方法,返回当前url

page_source

是一个属性方法,返回当前打开页面的源代码

refresh()

刷新当前页面。

back() 

forward()

浏览器的后退和前进操作。

implicitly_wait()

是一种智能等待,指在设置的等待时间范围内,只要满足了执行条件,就会立即结束等待,继续往下进行,如果超时,则抛出异常。

set_script_timeout(seconds)

设置脚本执行的时间,指在设置的等待时间范围内,只要满足了执行条件,就会立即结束等待,继续往下进行,如果超时,则抛出异常。

set_page_load_timeout(seconds)

设置页面加载的时间,指在设置的等待时间范围内,只要满足了执行条件,就会立即结束等待,继续往下进行,如果超时,则抛出异常。

timeouts

属性方法,返回包含上面三个时间的Timeouts对象,并可以设置三个时间的值。

cookies操作

get_cookies()

获取页面对应的cookie列表

get_cookie(name)

获取cookie列表中其中一个name=传入值的cookie,获取不到返回None

delete_cookie(name)

删除cookie列表中其中一个name=传入值的cookie

delete_all_cookies()

删除所有的cookie

add_cookie(cookie_dict)

添加一个cookie字典

窗口操作

maximize_window()

minimize_window()

fullscreen_window()

最大化或最小化或者全屏浏览器窗口。

window_handles()

存放打开窗口的句柄,用于切换不同窗口

current_window_handle()

返回当前窗口的句柄

switch_to.window()

切换不同的窗口页面(参数传入window_handles()

返回的列表中的某个句柄)

get_window_rect()

获取窗口的坐标和大小

set_window_rect()

设置窗口的坐标和大小(坐标指距离屏幕左上角的横坐标和竖坐标值)

get_window_position()

获取窗口的坐标,默认是当前窗口,也可以传某个窗口句柄(坐标指距离屏幕左上角的横坐标和竖坐标值)

set_window_position()

设置窗口的坐标,默认是当前窗口,也可以传某个窗口句柄

get_window_size()

获取窗口的大小,默认是当前窗口,也可以传某个窗口句柄

set_window_size()

窗口的大小,默认是当前窗口,也可以传某个窗口句柄

close()

关闭当前窗口

SwitchTo类对应的一些操作:

提示框操作

frame操作

switch_to.alert()

切换到提示框对象

switch_to.frame()

切换到不同的frame

switch_to.default_content()

退出到默认frame

switch_to.parent_frame()

退出到上一级frame

执行js脚本

execute_script()

执行js脚本

execute_async_script()

异步的执行js脚本

退出操作

quit()

关闭所有窗口,退出浏览器

 初始化好某浏览器的webdriver后,使用get函数打开网页地址,然后使用find_element(返回元素对象WebElement)或者find_elements方法(返回元素对象WebElement的列表)查找页面元素对象,有了元素对象,才能做接下来的一些操作,比如输入文本/点击按钮等。

函数源代码如下:适用selenium4.23.1版本

图片

图片

函数中的参数by表示定位元素的方式,在

selenium.webdriver.common.by.By中定义如下:

图片

函数中的参数value表示参数by对应的值。

也就是说find_element函数可以通过以下8种方式进行元素定位:

["id", "xpath", "link text", "partial link text", "name", "tag name", "class name", "css selector"]

举例:使用Safari浏览器打开百度,以id来定位搜索框的元素位置。

from selenium import webdriver
driver = webdriver.Safari()
# 打开一个网页
driver.get("https://www.baidu.com")
driver.find_element(By.ID,'kw')

举例:使用Safari浏览器打开百度,以name来定位搜索框的元素位置。
driver.find_element(By.NAME,'wd')

举例:使用Safari浏览器打开百度,以class来定位搜索框的元素位置。
driver.find_element(By.CLASS_NAME,'s_ipt')

举例:使用Safari浏览器打开百度,以Xpath来定位搜索框的元素位置。
driver.find_element(By.XPATH,'//*[@id="kw"]')

举例:使用Safari浏览器打开百度,以link text来定位新闻链接的元素位置。
driver.find_element(By.LINK_TEXT,'新闻')

设置隐式等待时间implicitly_wait

图片

测试代码:

from selenium import webdriver
driver = webdriver.Safari()
driver.implicitly_wait(5)

设置脚本等待时间set_script_timeout

图片

测试代码:

from selenium import webdriver
driver = webdriver.Safari()
driver.set_script_timeout(5)

设置页面加载等待时间set_page_load_timeout

图片

测试代码:

from selenium import webdriver
driver = webdriver.Safari()
driver.set_page_load_timeout(5)

获取所有设置的等待或者超时时间timeouts

图片

图片

timeouts属性函数返回的是Timeouts类,包含三个属性

图片

测试代码:

1)设置等待和超时时间后,通过timeouts属性函数读取这些设置的时间

from selenium import webdriver
driver = webdriver.Safari()
driver.implicitly_wait(5)
driver.set_script_timeout(5)
driver.set_page_load_timeout(5)
print(driver.timeouts.implicit_wait)
print(driver.timeouts.page_load)
print(driver.timeouts.script)

执行结果:

5.0

5.0

5.0

2) 设置timuouts属性中三个时间

先导入Timeouts类

from selenium.webdriver.common.timeouts import Timeouts

测试代码:

from selenium import webdriver
#初始化Timeouts类 并设置时间
timeouts_new = Timeouts()
timeouts_new.implicit_wait = 4
timeouts_new.page_load = 4
timeouts_new.script = 4
#将属性timeouts设置为Timeouts对象
driver.timeouts = timeouts_new
#打印3个时间值
print(driver.timeouts.implicit_wait)
print(driver.timeouts.page_load)
print(driver.timeouts.script)

执行结果:

4.0

4.0

4.0

网页的一些操作方法

先定义Safari浏览器的driver对象

from selenium import webdriver
driver = webdriver.Safari()

1)打开传入的URL网页地址

driver.get("https://www.toutiao.com/")

图片

2)返回当前url

print(driver.current_url)

图片

3)page_source 是一个属性方法,返回当前打开页面的源代码

print(driver.page_source)

图片

4)refresh() 刷新当前页面。

driver.refresh()

图片

5)back()和forward() 浏览器的后退和前进操作。

driver.back()
driver.forward()

图片

6)退出webdriver

driver.quit()

图片

cookie操作方法

from selenium import webdriver

1)获取所有cookie

print(driver.get_cookies())

图片

2)获取某个name值的cookie

print(driver.get_cookie('__ac_nonce'))

图片

3)删除某个name值的cookie

driver.delete_cookie('__ac_nonce')

图片

4)删除所有cookie

driver.delete_all_cookies()

图片

5)添加一个cookie

driver.add_cookie({'name':'nonce', 'value': '7421004976065267240'})

图片

窗口操作方法

from selenium import webdriver

1)获取窗口大小并设置窗口大小

图片

#获取窗口大小
print(driver.get_window_size())
#设置大小
driver.set_window_size(1000,600)
print(driver.get_window_size())

2)获取窗口坐标并设置窗口坐标

图片

#获取坐标
print(driver.get_window_position())
#设置坐标
driver.set_window_position(20,30)
print(driver.get_window_position())

3)获取窗口坐标和大小并设置窗口坐标和大小

图片

#获取坐标和大小
print(driver.get_window_rect())
#设置坐标和大小
driver.set_window_rect(20,30,800,700)
print(driver.get_window_rect())

4)窗口最大化/最小化/全屏

图片

driver.minimize_window()
driver.maximize_window()
driver.fullscreen_window()

5)关闭窗口

driver.close()

图片

6)切换窗口

通过driver.window_handles获取打开窗口的句柄列表,然后通过driver.switch_to.window()切换不同的窗口

图片

以百度网站举例,打开新闻链接,然后切换窗口

from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
driver = webdriver.Safari()
# 打开一个网页
driver.get("https://www.baidu.com")
driver.maximize_window()
sleep(2)
#打开新闻链接
driver.find_element(By.LINK_TEXT,'新闻').click()
#打印文件句柄
print(driver.window_handles)
#循环切换窗口
while True:for i in driver.window_handles:sleep(1)driver.switch_to.window(i)

程序执行后,会打开新闻,然后来回切换两个窗口

图片

共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳。

----感谢读者的阅读和学习,谢谢大家。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Codigger Keyboard Look应用说明

Keyboard Look是一项专为Desktop设计的功能模式&#xff0c;旨在通过全面启用键盘操作&#xff0c;减少对鼠标依赖&#xff0c;从而提升用户的工作效率和操作体验。尤其对于频繁使用键盘的用户&#xff0c;如开发者&#xff0c;此模式可显著加速日常操作&#xff0c;优化工作流…

连肝了多天学习MySQL索引与性能优化,详细总结一下索引的使用与数据库优化

文章目录 索引是什么&#xff1f;索引的作用初步认识索引索引的类型按照数据结构分类BTREE索引 哈希索引 按功能逻辑进行分类唯一索引普通索引主键索引全文索引 按照字段的个数进行划分单列索引多列&#xff08;组合&#xff0c;联合&#xff09;索引 小结索引的设计原则数据准…

Centos7 搭建单机elasticsearch

以下是在 CentOS 7 上安装 Elasticsearch 7.17.7 的完整步骤&#xff1a;&#xff08;数据默认保存在/var/lib/elasticsearch下&#xff0c;自行更改&#xff09; 一、装 Java 环境 Elasticsearch 是用 Java 编写的&#xff0c;所以需要先安装 Java 运行环境。 检查系统中是…

gbase8s之建表相关问题

第一章..绪论 1.1..背景 需要对明年所有系统的表新建。 1.2..要求 对导切建表可能遇到的一些问题罗列及解决办法。 第二章..新建表的的过程 1.1..获取DDL 获取DDL一定要在服务器上去获取&#xff0c;千万别用gds去导出ddl。 1.1.1..切换数据库用户 su – gbasedbt 1.1…

一键录制电脑画面全攻略!免费的电脑录屏秘籍

屏幕录制&#xff0c;这是个看起来挺简单&#xff0c;实际上作用可大了的工具。它能帮咱们把电脑屏幕上的每个动作都给抓住&#xff0c;不管是弄教程&#xff0c;还是记会议&#xff0c;又或者是分享游戏里的精彩时刻。不过&#xff0c;一键录制真有它听上去那么容易吗&#xf…

1.Label Studio 介绍

Label Studio 介绍 文章目录 Label Studio 介绍前言一、安装介绍二、Run with Docker Compose1、WSL2安装2、Docker Desktop安装3、Label Studio安装&#xff08;第二种方法 Run with Docker Compose &#xff09; 三、Install for local development1.下载源码2.安装poetry3.安…

了解计算机视觉:探索直播平台视频美颜SDK的集成与性能调优

本篇文章。小编将详细探讨计算机视觉在直播中的应用&#xff0c;尤其是如何集成视频美颜SDK并进行性能调优。 一、计算机视觉与视频美颜的基本原理 计算机视觉是人工智能的一个重要分支&#xff0c;旨在让机器能够“看见”并理解图像或视频中的内容。在直播场景中&#xff0c…

ECCV`24 | 新加坡国立华为提出Vista3D: 实现快速且多视角一致的3D生成

文章链接&#xff1a;https://arxiv.org/pdf/2409.12193 gitbub链接&#xff1a;https://github.com/florinshen/Vista3D 亮点直击 提出了Vista3D&#xff0c;一个用于揭示单张图像3D darkside 的框架&#xff0c;能够高效地利用2D先验生成多样的3D物体。开发了一种从高斯投影到…

红外传感器的算法!

一、红外线的基本性质 红外线&#xff0c;又称红外光&#xff0c;是电磁波谱中波长介于可见光和微波之间的部分。它具有反射、折射、散射、干涉和吸收等物理特性&#xff0c;这些特性使得红外线传感器能够实现对物体的非接触式检测。 二、红外传感器的算法原理 热电效应&…

计算机网络:物理层 —— 数据的传输方式

文章目录 传输方式串行传输串行传输方式特点应用 并行传输特点应用 网卡的串/并转换同步传输同步时钟频率的误差问题特点应用 异步传输特点应用 单向通信特点应用 双向交替通信特点应用 双向同时通信特点应用 传输方式 串行传输 串行传输是一种数据传输方式&#xff0c;指的是…

双十一买什么东西比较好?2024双11好物攻略诚意分享

双十一活动已经准备要开始了&#xff0c;很多人摩拳擦掌准备入手划算好物&#xff0c;但是有的人也比较迷茫&#xff0c;双十一买什么东西比较好&#xff1f;为了帮助大家在这场购物狂欢中理性消费&#xff0c;提升购物体验&#xff0c;我们精心整理了一份2024双11好物攻略诚意…

【树莓派5B】移植yolo5-lite

移植yolo5-lite 前言一、获取Lite文件二、创建环境2.1 创建虚拟环境2.2 激活虚拟环境2.2 配置环境 三、运行detect.py程序总结 前言 参考文献 获取文件看他研究僧树莓派5的学习记录13——yolov5-lite部署树莓派 树莓派5B快速YOLOV5环境搭建 一、获取Lite文件 根据up&#x1f…

解决:Ubuntu连接不上网络

今天莫名奇妙&#xff0c;我的ubuntu20.04断网了。检查了一下&#xff0c;使用的也是桥接模式&#xff0c;啥也没有变化。 然后我上Ubuntu16.04版本看了&#xff0c;那里又可以成功上网&#xff0c;所以&#xff0c;不是电脑的问题。 看了网上两个教程&#xff0c;解决了。 …

Intel Xeon(至强) 服务器 CPU

Purley平台&#xff1a;Sky Lake&#xff08;第一代&#xff09;、Cascade Lake&#xff08;第二代&#xff09; Whitley平台&#xff1a;Cooper Lake、Ice Lake&#xff08;第三代&#xff09; Eagle Stream平台&#xff1a;Sapphire Rapids、Emerald Rapids&#xff08;第四…

WebSocket状态码及异常报错1006

文章目录 1.WebSocket协议简介2.WebSocket状态码的作用&#xff1a;3.WebSocket状态码1006详解1.问题原因2.解决方案 1.WebSocket协议简介 WebSocket协议是一种基于TCP的协议&#xff0c;它通过在浏览器和服务器之间建立一条持久的双向通信通道&#xff0c;实现了实时的数据传…

【C语言】static关键字修饰局部变量、全局变量、函数

【C语言】static关键字修饰局部变量、全局变量、函数 文章目录 [TOC](文章目录) 前言一、static关键字修饰局部变量1.未加入static关键字2.加入static关键字3.小结 二、static关键字修饰全局变量1.未加入static关键字2.加入static关键字3.小结 三、static关键字修饰函数1.未加入…

无人机飞手执照培训费用较高原因分析

无人机飞手执照培训费用较高的原因可以归结为多个方面&#xff0c;以下是对这些原因的具体分析&#xff1a; 一、课程内容的全面性和专业性 无人机飞手执照培训涵盖了从无人机基础知识到高级飞行技巧、从组装调试到故障维修的多个方面。这种全面性和专业性要求培训机构提供高…

具备技术一:Linux定时器

一、接口 1、创建定时器 timerfd_create 返回值&#xff1a;返回定时器文件描述符。原理&#xff1a;每隔一个超时时间系统会给描述符写入一个8字节数据代表已经超时几次。 clockid&#xff1a; CLOCK_REALTIME&#xff1a;以系统时间作为基准值&#xff08;若改变系统时间就…

SoapUI、Jmeter、Postman三种接口测试工具的比较分析

本报告从多个方面对接口测试的三款常用工具进行比较分析&#xff0c;以便于在特定的情况下选择最合适的工具&#xff0c;或者使用自己编写的工具。&#xff08;不同工具定位不同&#xff0c;我们只是主要从接口功能测试的角度进行分析&#xff09;。 报告中如果有哪些不合适的地…

AI开发者工具的双子星:Cursor与ChatGPT Canvas的区别

01—Cursor&#xff1a;沉浸式的开发体验 Cursor是一款旨在为开发者提供无缝编程体验的工具。它将AI的功能深度嵌入到开发者熟悉的环境中&#xff0c;便于在编码过程中获得即时帮助。开发者无需离开自己的操作界面&#xff0c;AI就能自动为其提供代码补全、错误检查和优化建议…