Selenium:浏览器及鼠标、键盘事件

news2024/11/16 0:32:41

目录

一、控制浏览器

二、鼠标事件

三、键盘事件


一、控制浏览器

webdriver主要提供操作页面上各种元素的方法,但它也提供操作浏览器的一些方法,例如控制浏览器大小、前进和后退等。

1、控制浏览器窗口大小

1 # 控制浏览器大小
2 from selenium import webdriver
3 driver = webdriver.Chrome("安装工具\python\chromedriver.exe")
4 driver.get("http://www.baidu.com")
5 # 参数数字为像素点
6 print("设置浏览器宽480、高800显示")
7 driver.set_window_size(480,800) 

2、全屏显示

webdriver提供了maximize_window()方法使打开的浏览器全屏显示,其用法与set_window_size()相同。

3、控制浏览器前进、后退

现在的浏览器在浏览网页时都提供了前进和后退功能,webdriver也提供了对应的forward()和back()方法,来模拟前进和后退按钮:

1 # 控制浏览器前进、后退
 2 from selenium import webdriver
 3 driver = webdriver.Chrome("安装工具\python\chromedriver.exe")
 4 # 访问百度首页
 5 first_url='http://www.baidu.com''
 6 print("now access %s "%(first_url))
 7 driver.get(first_url)
 8 # 访问新闻页面
 9 second_url='http://www.news.baidu.com'
10 print("now access % s "%(second_url)")
11 driver.get("second_url")
12 # 后退到百度首页
13 print("back to %s "%(first_url)")
14 driver.back()
15 # 前进到新闻页
16 print("forward to %s "%(second_url)")
17 driver.forward() 

为了看清脚本执行过程,每一步的操作都通过print()打印当前的URL地址,执行结果如下:

now access http://www.baidu.com

now access http://news.baidu.com

back to http://www.baidu.com

froward to http://news.baidu.com

4、模拟浏览器前刷新

一般我们刷新页面都是通过F5或者页面上的刷新按钮,webdriver也提供了刷新方法refresh(),用来模拟页面刷新:

......

# 刷新当前页面

driver.refresh()

......

二、鼠标事件

在webelement接口提供的方法中,可以通过click()来模拟鼠标单击操作,但实际上鼠标交互方式很多,例如:右击、悬停、鼠标拖动等功能;

webdriver提供了ActionChains类,封装了鼠标操作的常用方法:

perform():执行所有的ActionChains中存储的行为

context_click():鼠标右击

double_click():鼠标双击

drag_and_drop():鼠标拖动

move_to_element():鼠标悬停

1、鼠标右击操作

 1 # 鼠标右击操作
 2 from selenium import webdriver
 3 from selenium.webdriver.common.action_chains import ActionChains
 4 driver = webdriver.Chrome("安装工具\python\chromedriver.exe")
 5 driver.get("http://www.baidu.com")
 6 # 定位到要右击的元素
 7 right_click = driver.find_element_by_id("KW")
 8 # 对定位到的元素执行鼠标右击操作
 9 ActionChains(driver).context_click(right_click).perform()
 10 ...

2、鼠标悬停

鼠标悬停弹出下拉菜单也是一个十分常见的功能设计,move_to_element()方法可以模拟鼠标悬停动作,其用法与context_click()相同;

1 # 鼠标悬停
2 ...
3 above = driver.find_element_by_id("id")
4 ActionChains(driver).move_to_element(above).perform()
5 ... 

3、鼠标双击操作

double_click()方法用于模拟鼠标双击操作;

1 # 鼠标双击操作
2 ...
3 double_click = driver.find_element_by_id("id")
4 ActionChains(driver).double_click(double_click).perform()
5 ...

4、鼠标拖放操作

drag_and_drop(source,target)在源元素上按住鼠标左键,然后移动到目标元素上释放;

source:鼠标拖动的源元素

target:鼠标释放的目标元素

1 # 定位元素的位置
2 ...
3 element = driver.find_element_by_id("id")
4 # 定位元素要移动到的目标位置
5 target = driver.find_element_by_id("xx")
6 # 执行元素的拖放操作
7 ActionChains(driver).drag_and_drop(element,target).perform()
8 ... 

三、键盘事件

Keys()类提供了键盘上几乎所有的按键方法,send_keys()不见可以模拟键盘输入,还可以用来输入键盘上的按键,甚至是组合键,例子如下:

1 # 模拟键盘事件
2 from selenium import webdriver
3 # 引入keys模块
4 from selenium.webdriver.common.keys import Keys
5 driver = webdriver.Chrome("安装工具\python\chromedriver.exe")
6 driver.get("http://www.baidu.com")
7 # 输入框输入内容
8 driver.find_element_by_id("kw").send_keys("selenium")
9 # 输入“教程”
10 driver.find_element_by_id("kw").send_keys("教程")
11 # 删除“教程”
12 driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
13 ...

以下为常用的键盘操作:

 1 # 常用的键盘操作
 2 send_keys(Keys.BACK_SPACE)
 3 send_keys(Keys.SPACE)
 4 send_keys(Keys.TAB)
 5 send_keys(Keys.ESCAPE)
 6 send_keys(Keys.ENTER)
 7 send_keys(Keys.CONTROL,'a')
 8 send_keys(Keys.CONTROL,'c')
 9 send_keys(Keys.CONTROL,'v')
10 send_keys(Keys.CONTROL,'x')
11 send_keys(Keys.F1)
12 ...
13 send_keys(Keys.F12) 

以上为webdriver的控制浏览器操作以及模拟键盘、鼠标操作的常用方法,当然具体在实际使用过程中,还需要结合实际的业务场景,灵活运用!

加油吧,测试人!如果你需要提升规划,那就行动吧,在路上总比在起点观望的要好。未来的你肯定会感谢现在拼命的自己!

 

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

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

相关文章

2023哪款蓝牙耳机性价比高?200左右高性价比蓝牙耳机推荐

现如今的蓝牙耳机越来越多,人们在选择时不免纠结,不知道选什么蓝牙耳机比较好?针对这个问题,我来给大家推荐几款性价比高的蓝牙耳机,一起来看看吧。 一、南卡小音舱Lite2蓝牙耳机 参考价:299 蓝牙版本&am…

常见提高SQL执行效率示例

1、减少与数据库的交互: 当传参是一个list集合时,通过遍历查询数据库会造成数据库压力过大,这样查询效率就比较低,应该减少与数据库的交互来提高查询效率:(这里的objId为“ljydl”,"ljtpfl") QueryWrapper&…

JavaScript全解析——本地存储的概念、用法详解

本地存储概念: 就是浏览器给我们提供的可以让我们在浏览器上保存一些数据 常用的本地存储 localStorage sessionStorage localStorage 特点: 1.长期存储,除非手动删除否则会一直保存在浏览器中,清除缓存或者卸载浏览器也就没有了 2.可以跨页面通讯,…

如何设计出结构清晰布局漂亮的SWC结构图

我们都知道AUTOSAR的设计理念是自顶向下的设计,并且现在使用的很多AUTOSAR工具链对于SWC的设计都支持模型设计,以Vector Developer工具为例,假设我们不调整Composition,其结构图显示将会比较乱,比如如下这个样子,结构图中ports关系不清晰,位置重叠,布局不够清晰,有些朋…

二维码在设备管理中的应用

对设备进行巡检是工厂日常管理中必不可少的工作之一,从前很多工厂使用纸质记录打钩的方式进行设备巡检,但纸质巡检单不易保存也不方便进行查阅或汇总,除此之外光靠打钩很难保证巡检的真实性,不能起到防假检的功能。 为了让设备巡…

vue3+Typescript实现路由标签页和面包屑

文章目录 在vue中实现路由标签页和面包屑需求分析最终效果实现步骤第一步:创建路由标签组件和面包屑第二步:创建路由标签数组第三步:监听路由变化并自动添加新标签第四步:处理关闭标签事件第五步:当前路由标题同步面包…

Oracle RAC 19c集群搭建指南:实现高可用、高性能的数据库集群(超详细)

Oracle RAC 19c集群搭建指南:实现高可用、高性能的数据库集群(超详细) 1.新建节点 因为rac集群使用的是共享盘(esxi设置共享盘步骤如下): 首先添加一个iSCSI控制器SCSI总线共享选择虚拟添加硬盘&#xf…

java:fastjson,jackson自定义反序列化器设计暨jackson反序列化时出现StackOverflowError异常的原因分析

问题描述 如下是一个Java Bean类,这是我的sql2java工具根据数据库表自动生成的对应表记录的Java类。 与之对应的数据库表定义如下: CREATE TABLE IF NOT EXISTS dc_device_channel (device_id int NOT NULL COMMENT XNAME:设备IDX,sid …

一种具备过载检测和打嗝式保护功能的MBUS主机电路

关于MBUS电路原理和简化电路见本篇文章, MBUS主机端简化版电路设计_Tech-Wang的博客-CSDN博客https://blog.csdn.net/jsf120/article/details/123378064?spm1001.2014.3001.5502 上篇中的电路已经验证通过并在产品中实际应用,本篇在此基础上增加了打嗝…

itop-3568开发板驱动学习笔记(25)设备树(四)GPIO 实例分析

《【北京迅为】itop-3568开发板驱动开发指南.pdf》 学习笔记 文章目录 GPIO 控制器必要属性其他属性 指定 GPIO 引脚 和时钟类似,GPIO 在设备树中也存在两层定义,首先是 GPIO 控制器,这部分由芯片原厂工程师编写,相当于 GPIO 底层…

恺撒密码太简单?这样一改,秒变地狱级难度(37)

小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生。 欢迎和猫妹一起,趣味学Python。 今日主题 看过上一篇文章的朋友,可能觉得这样加密,未免太简单了吧? 一共26个字母&#xf…

【java】一文让你了解透彻Java中的IO模型

文章目录 前言一、什么是IO二、常见的IO模型BIO(Blocking IO)如何优化NIO的面世 三、NIO(Non-blocking/New IO)同步非阻塞IO模型IO多路复用模型Java中的NIO 四、AIO(Asynchronous IO)总结 前言 本文只是说…

不要一昧的给孩子做骨密度检查,这些情况才要做

国内,骨密度检测应用非常广泛。也成了很多医院儿科常规的体检项目之一。而在儿科领域,对骨密度检查的必要性、临床参考意义一直颇有争议。 有专家说,“孩子需要及时检测骨密度,但是要用科学有效的检测方式……只有双能X线的检测方…

BetaFlight统一硬件配置文件研读

BetaFlight统一硬件配置文件研读 1. 源由2. 分析2.1 硬件SOC2.2 统一配置文件2.3 cli命令2.4 板级配置主要命令2.4.1 board_name2.4.2 manufacturer_id2.4.3 resource2.4.4 timer2.4.5 dma2.4.6 serial2.4.7 set2.4.8 feature 3. 实例研读3.1 C遗留配置3.2 BoardName - AOCODAR…

asp.net+C#基于web的失物招领系统ccA1A9程序

根据分析,该系统应该有二个角色:管理员、注册用户。系统需要赋予他们对应的功能和权限,具体如下: 管理员具有:管理管理注册用户、管理新闻模块、管理留言的功能和权限。 具有:浏览新闻、管理失物信息、参与…

【Linux内幕】DMA原理

1.前言 I/O设备与主存信息传送的控制方式分为程序轮询、中断、DMA、RDMA等。 2.DMA介绍 DMA,全称Direct Memory Access,即直接存储器访问。 DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之…

GAT1400-视图库标准

一、简述: GA/T 1400是于2017年首次发布关于图片、视频片段、文件等属性对象的传输协议。 GA/T 1400《公安视频图像信息应用系统》分成4个部分: 第一部分–通用技术要求; 第二部分–应用平台技术要求; 第三部分–数据库技术要…

前端学习之使用JavaScript

前情回顾:网页布局 JavaScript 简介 avaScript诞生于1995年,它的出现主要是用于处理网页中的前端验证。所谓的前端验证,就是指检查用户输入的内容是否符合一定的规则。比如:用户名的长度,密码的长度,邮箱的…

刘强:作业帮给OceanBase提了九条意见

3 月 25 日,第一届 OceanBase 开发者大会在北京举行, 作业帮数据库架构师刘强为大家带来了《作业帮基于 OceanBase 的 HTAP 实践》的分享 ,为大家介绍了 OceanBase 上线作业帮半年来的体验与心得。 以下内容由大会演讲整理而成: …

提示工程玩转 ChatGPT

Prompt engineering is the skill of the future. 目录: 1. 简介 (Introduction) 2. 提示指南 (Prompt Guidelines) 2.1 指令要清晰明确 2.2 给模型时间思考 3. 迭代提示 (Iterative Prompt) 3.1 迭代过程 3.2 案例展示 4. 文本概括 (Text Summarization) 4.1 单文本…