selenium UI使用小技巧集合

news2024/10/6 17:58:08

selenium这个工具就不用我多介绍了吧,咱们已经说过很多很多次咯,所以就直接上主题:

窗口截图

webdriver 提供了 get_screenshot_as_file()函数来截取当前窗口

from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get('http://www.baidu.com')

# 截屏,截取整个页面
driver.get_screenshot_as_file("./all.png")
# 截屏,截取单个元素
ele = driver.find_element_by_id('kw')
ele.screenshot("./ele.png")

driver.quit()

警告框处理

在WebDriver中处理JavaScript所生成的alert、confirm以及prompt十分简单,具体做法是使用 switch_to.alert 方法定位到 alert/confirm/prompt,然后使用text/accept/dismiss/ send_keys等方法进行操作

  • text:返回 alert/confirm/prompt 中的文字信息
  • accept():接受现有警告框
  • dismiss():取消现有警告框
  • send_keys(“haha”):发送文本至警告框
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.implicitly_wait(5)
driver.get("D:\\test\script\study\seleniumStu\day6\警告框.html")

# # 触发对话框
# driver.find_element_by_id("bu1").click()
# al = driver.switch_to.alert
# time.sleep(3)
# al.accept()  # 确认对话框
# # 触发确认框
# driver.find_element_by_id("bu2").click()
# al = driver.switch_to.alert
# al.accept()  # 确认对话框
# driver.find_element_by_id("bu2").click()
# al.dismiss()  # 取消对话框
# 触发提示框
driver.find_element_by_id("bu3").click()
al = driver.switch_to.alert
al.send_keys("口罩太贵了")
al.accept()  # 确认对话框
time.sleep(3)
driver.quit()

鼠标事件

用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击、双击、点击鼠标右键、拖拽等等。而selenium给我们提供了一个类来处理这类事件——ActionChains

ActionChains 类提供了鼠标操作的常用方法:

  • perform():执行操作
  • context_click():右击;
  • double_click():双击;
  • drag_and_drop():拖动;
  • move_to_element():鼠标悬停。
from selenium import webdriver
# 引入 ActionChains 类
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Chrome()
driver.get("https://www.baidu.cn")

# 定位到要悬停的元素
above = driver.find_element_by_link_text("设置")
# 对定位到的元素执行鼠标悬停操作
ActionChains(driver).move_to_element(above).perform()

driver.quit()

键盘事件

Keys()类提供了键盘上几乎所有按键的方法。前面了解到, send_keys()方法可以用来模拟键盘输入, 除此 之外, 我们还可以用它来输入键盘上的按键, 甚至是组合键, 如 Ctrl+A、 Ctrl+C 等

from selenium import webdriver
# 引入 Keys 模块
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")

# 输入框输入内容
driver.find_element_by_id("kw").send_keys("seleniumm")

# 删除多输入的一个 m
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)

# 输入空格键+“教程”
driver.find_element_by_id("kw").send_keys(Keys.SPACE)
driver.find_element_by_id("kw").send_keys("教程")

# ctrl+a 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'a')

# ctrl+x 剪切输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'x')

# ctrl+v 粘贴内容到输入框
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'v')

# 通过回车键来代替单击操作
driver.find_element_by_id("su").send_keys(Keys.ENTER)

driver.quit()

以下为常用的键盘操作:

  • send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
  • send_keys(Keys.SPACE) 空格键(Space)
  • send_keys(Keys.TAB) 制表键(Tab)
  • send_keys(Keys.ESCAPE) 回退键(Esc)
  • send_keys(Keys.ENTER) 回车键(Enter)
  • send_keys(Keys.CONTROL,‘a’) 全选(Ctrl+A)
  • send_keys(Keys.CONTROL,‘c’) 复制(Ctrl+C)
  • send_keys(Keys.CONTROL,‘x’) 剪切(Ctrl+X)
  • send_keys(Keys.CONTROL,‘v’) 粘贴(Ctrl+V)
  • send_keys(Keys.F1) 键盘 F1
  • ……
  • send_keys(Keys.F12) 键盘 F12

iframe切换

iframe,又叫浮动帧标记,是内嵌的网页元素,可以将一个html文件嵌入到另一个html文件中显示

对iframe进行操作,需要用到以下三种方法:

switch_to_iframe() 切换到iframe上(未来会被删除,不建议使用)

switch_to.frame() 切换到iframe上

switch_to.default_content() 切换回原主页面

通过如下方式进行切换操作

#定位到iframe

iframe=driver.find_element_by_id(“x-URS-iframe”)

#切换到iframe

driver.switch_to_frame(iframe)

from selenium import webdriver
import time

driver = webdriver.Chrome("D:\\tool\selenium\chromedriver.exe")
# 隐式等待
driver.implicitly_wait(5)
driver.get("D:\\test\script\study\seleniumStu\day3\\test.html")

"""
对iframe进行操作,需要用到以下三种方法:
switch_to_iframe()                       切换到iframe上
switch_to.frame()                         切换到iframe上
switch_to.default_content()         切换回原主页面
"""
iframe = driver.find_element_by_id("f91fb5bc-bd95-45bf-bd77-977a2afbd25f")
driver.switch_to.frame(iframe)
driver.find_element_by_id("e4890ded-16e1-4445-bf8e-7f655793f332").send_keys("haha")

time.sleep(5)
driver.quit()

多标签页切换

在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要切换到新打开的窗口上进行操作。WebDriver提供了以下方法

current_window_handle:获得当前标签页句柄

window_handles:返回所有便签页的句柄

switch_to.window(标签页句柄):切换到对应的标签页

关闭标签页使用 close 方法

from selenium import webdriver

# 创建浏览器驱动对象
driver = webdriver.Chrome()
# 访问网址
driver.get("http://www.baidu.com")

# 找到搜索按钮
input_element = driver.find_element_by_id("kw")
# 输入搜索内容
input_element.send_keys("松勤\n")

# 点击松勤教育官网
driver.find_element_by_css_selector("#\34  > h3 > a > em").click()

# 获得当前所有打开的窗口的句柄
all_handles = driver.window_handles

for handle in all_handles:
    driver.switch_to.window(handle)
    print(driver.title)

# 退出浏览器
driver.quit()

补充

#将页面滚动条拖到底部

js=“var q=document.documentElement.scrollTop=100000”

driver.execute_script(js)

time.sleep(3)

#将滚动条移动到页面的顶部

js=“var q=document.documentElement.scrollTop=0”

driver.execute_script(js)

time.sleep(3)

#将页面滚动条移动到页面任意位置,改变等于号后的数值即可

js=“var q=document.documentElement.scrollTop=50”

driver.execute_script(js)

如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以加入我们的QQ群:746506216,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。


资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

超详细的Python实现MySQL数据库基本操作,今天小编给大家整理好了

一、SQL语句 (mysql 数据库中的语言) show databases;查看数据库 use "database_ name" ;进入数据库 show tables; 查看当前数据库中有哪些表 select * from "table_ name";查询数据表中的所有内容 describe "table_ name"; 查看表结构 desc &q…

外包干了2年,彻底废了...

先说一下自己的情况。大专生,17年通过校招进入湖南某软件公司,干了接近2年的点点点,今年年上旬,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了五年的功能测试…

【Linux】Linux下基本指令(一)

作者:一个喜欢猫咪的的程序员 专栏:《Linux》 喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》 目录 一、浅谈操作系统: 1.1什么是操作系统?&#xff…

力扣46:全排列(Java回溯)

一、题目描述 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2: 输入&…

[附源码]计算机毕业设计springboot汽配管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

python 如何根据索引快速删除列表中的多个元素

一、批量删除列表中不同位置的元素 列表是python中经常用到的一种数据结构,因python提供了很多方法对其增、删、查、改,故使用起来比较灵活,下面就介绍下如何快速删除列表中多个元素的方法。 二、具体用法 例如:待处理列表为[‘…

实体-联系模型--E-R图

👨‍💻个人主页:元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 收录于专栏 数据库干货铺 ⭐E-R图⭐ 文章目录⭐E-R图⭐一,E-R模型的基本概念👨‍💻概…

setCharacterEncoding和setContentType有什么不同

如果仅仅从服务器的角度来看,这两个方法其实本质是一样的,以下内容是摘抄自oracle的官网: Defines an object to assist a servlet in sending a response to the client. The servlet container creates a ServletResponse object and passe…

HITCTF2022-WEB2-easypop

WEB easypop 题目给了源码 <?php // php version 7.4.32 class a{protected $a1;private $a2;private $a3;public function __unset($unset) {$this->a2 [];if($this->a3){if($this->a1->{$unset} ! []){$this->a1->{$unset} $this->a2;}}}funct…

Python编程 顺序执行与程序的主入口

作者简介&#xff1a;一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.顺序执行 1.顺序执行(了解) 2.程序主入口(熟悉) 前言 本章将会讲解P…

网络安全运维工程师(NISP-SO)需要掌握那些知识点

想要学习了解“网络安全运维工程师&#xff08;NSP-SO)”看这个12点就够了。从“掌握核心能力”到如何“应急响应”并提高安全运维的知识水平 第一阶段 先导基础知识内容 学生可掌握的核心能力 1、能够根据企业需求&#xff0c;搭建基于windows服务器的网站 2、能够根据企业…

二、CSS自制浏览器滑动条

一、滑动条 思路&#xff1a;首先我们需要想清楚&#xff0c;大体思路应该是把浏览器默认滑动条隐藏&#xff0c;然后自己手写一个好看的滑动条&#xff0c;主要是做出和浏览器滑动条一样的上下移动的效果出来。 解释&#xff1a;如下图所示&#xff0c;有一个盒子高度是100p…

【论文阅读笔记】A review of the deep learning methods for medical images super resolut

摘要 医疗图像中分辨率的限制来源于&#xff1a;图像采集次数的限制&#xff0c;由于硬件限制导致的低辐射&#xff08;Low irradiation&#xff09;等。 这篇综述应该比较基础&#xff0c;从深度学习 -> 超分网络架构 -> 再到医疗图像超分问题的介绍。对于医疗方向的介绍…

[附源码]JAVA毕业设计高校信息资源共享平台(系统+LW)

[附源码]JAVA毕业设计高校信息资源共享平台&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目…

3.13 小红书笔记怎样带话题,才能增加曝光?【玩赚小红书】

虽然很多博主都知道在笔记内容最后要带上一个相关话题&#xff0c;但却很少人知道带什么样的话题&#xff0c;如何找到官方话题或热门话题来提高笔记内容的曝光。这一篇文章黄宇风就来讲讲&#xff0c;小红书笔记该如何带话题。 ​ ​ 1、挖掘小红书笔记热门话题 笔记带话题主…

命令行下编译与运行简单的OC程序

学习OC的语法建议还是用普通的编辑器写OC代码&#xff0c;然后在终端命令行下编译与运行。那我们来看一下是如何在命令行下编译一个OC源文件&#xff0c;以及运行编译后的可执行文件的 开发环境 操作系统&#xff1a;macOS Big Sur 终端&#xff1a;iTerm2 Build 3.4.8 clong…

Linux基础知识与实操-篇五:bash使用进阶

通过上篇 篇四:初识bash与配置 的学习&#xff0c;已经基本认识了Linux下bash工具的使用和配置&#xff0c;下面将讲解过多关于bash在其他地方的使用。 终端机的环境设置 stty -a 命令可以得到 目前环境中 所有的 按键列表&#xff0c;其中 ^ 表示的是 ctrl 按键&#xff0c;…

原来电商企业也能运用模型规划设计营销活动

营销推广是电商重要的运营组成。电商平台要发起一场综合性的推广活动&#xff0c;需要明确参与活动的商品范围、促销价格、推广渠道以及如何触达到消费者等。很多营销推广活动规则复杂且不断变化&#xff0c;就需要使用模型来设计&#xff0c;例如邀人砍一刀的“免费提现”、多…

[附源码]Python计算机毕业设计Django高校学生宿舍管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

【人工智能】知识图谱

文章目录一、知识图谱的概况二、知识图谱的基本概念三、知识图谱构建技术四、知识图谱主要应用四、知识图谱主要应用一、知识图谱的概况 知识&#xff08;Knowledge&#xff09;&#xff1a;合理性&#xff08;Justified&#xff09;、真实性&#xff08;True&#xff09;、被…