自动化测试-web(弹窗/滚动条/鼠标/等待等操作)

一、弹窗

为什么要处理弹窗?

如果页面操作过程中,有弹窗出现,不处理,无法继续对页面操作。

弹窗类型:

js原生弹窗: 警告框、输入框、提示框,这些必须处理

如何处理:

1)获取弹窗对象

2)点击同意或取消方法

alert 弹窗:只有信息及确认按钮

confirm弹窗:在alert弹窗基础上增加了取消按钮

prompt 弹窗: 在confirm基础上增加了可以输入文本

示例:

driver.switch_to.alert.accept() # 确定同意,三种弹窗都可以使用
driver.switch_to.alert.dismiss()# 取消不同意,confirm 和 prompt弹窗中使用
title = driver.switch_to.alert.text #打印弹窗信息
alert = driver.switch_to.alert # 获取alert对象
alert.send_keys() #prompt 弹窗中输入内容

二、滚动条

1. 定义js语句

2. 调用执行js方法

from selenium import webdriver
from time import sleep

driver = webdriver.Chrome("/usr/local/bin/chromedriver")
driver.get("https://www.hao123.com/")
driver.maximize_window()
sleep(5)
# 向下
js_down = "window.scrollTo(0,document.body.scrollHeight)"
# js_down = "window.scrollTo(0,1000)"
# 执行js方法
driver.execute_script(js_down)
sleep(5)
# 向上
js_top = "window.scrollTo(0,0)"
# 执行js方法
driver.execute_script(js_top)
sleep(5)
driver.quit()

三、鼠标操作

导包:

from selenium.webdriver import ActionChains

实例化鼠标对象:

action = ActionChains(driver)

调用鼠标方法:

  • action.move_to_element(elementxx) 鼠标悬停
  • action.context_click(elementxx) 鼠标右击
  • action.double_click(elementxx) 鼠标双击
  • action.drag_and_drop(source,target) 拖拽

执行鼠标操作:

action.perform() 调用鼠标方法并不会去执行鼠标操作,必须调用perform才会执行

driver = webdriver.Chrome("/usr/local/bin/chromedriver")
driver.get("https://www.baidu.com")

driver.maximize_window()
sleep(5)
# 实例化鼠标对象
action = ActionChains(driver)
na = driver.find_element_by_xpath('//*[@id="hotsearch-content-wrapper"]/li[1]/a/span[2]')
# 鼠标右击
action.context_click(na).perform()
sleep(5)
driver.quit()

四、等待

什么是等待?

代码执行过程中,第一次未找到元素,先不抛出异常。 激活等待时间,在等待过程中如果找到元素就执行。

为什么要等待?

由于网络或配置与原因,导致元素未加载出来,而代码已执行,会触发异常

元素等待类型:

1、隐式等待

说明:针对全部元素生效

方法:driver.implicitly_wait(x秒)

提示:项目中,如果未封装自动化框架时,推荐使用

2、显式等待

说明:针对单个元素生效,可以修改查找频率和超时时间

特点:查找并返回元素

用法:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium import webdriver

driver = webdriver.Chrome("/usr/local/bin/chromedriver")
# 显示等待 -> 返回查找到的元素
el = WebDriverWait(driver,10,0.5).until(lambda x:x.find_element(By.CSS_SELECTOR,"#userAA"))
el.send_keys("admin")

3、强制等待

语法: sleep(10)

提示: 执行到这句必须等待10秒

from time import sleep
sleep(5)

五、frame框架

frame 标签作用: 在页面中加载另一个页面

为什么要处理iframe?

焦点默认在启动页面,如果不处理iframe,无法操作iframe嵌入的页面元素

如何处理?

  • 切换到iframe: driver.switch_to.frame(iframe元素)
  • 操作元素
  • 回到默认页面:driver.switch_to.default_content()

六、切换多窗口

为什么要切换?

selenium 默认启动时,所有的焦点都在启动窗口,那么意味着无法操作其他窗口的标签

如何切换?

获取窗口句柄: driver.window_handles

使用句柄切换窗口: driver.switch_to.window(handle)

句柄:窗口的唯一标识符

多窗口之间切换工具封装:

如果定位不到元素该怎么办?

  • 元素定位代码是否正确
  • 是否匹配到唯一元素
  • 是否有元素等待
  • 是否需要鼠标悬浮
  • 元素是否在新窗口
  • 元素是否存在于iframe标签中

七、截图

为什么要截图?

出错后,方便查看错误的原因

如果截图?

driver.get_screenshot_as_file("xxx.png")

图片命名添加时间戳

driver.get_screenshot_as_file("error_{}.png".format(time.strftime("%Y_%m_%d %H_%M_%S")))

八、cookie

说明:由服务器生成,存储在客户端的登录凭证

使用:

获取cookie: driver.get_cookies()

添加cookie:   driver.add_cookie(data)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS实战开发-设备管理合集(非系统特性)

介绍 本示例集合设备管理相关(非系统特性)不需要复杂功能展示的模块,展示了各个模块的基础功能,包含: ohos.batteryInfo (电量信息)ohos.charger (充电类型)ohos.deviceInfo (设备信息)ohos.power (系统电源管理)oho…

Windows上面搭建Flutter Android运行环境

Flutter Android环境搭建 电脑上面安装配置JDK电脑上下载安装Android Studio电脑上面下载配置Flutter Sdk (避坑点一)下载SDK配置对应的环境变量 到path 电脑上配置Flutter国内镜像运行 flutter doctor命令检测环境是否配置成功创建运行Flutter项目&…

openssl3.2 - exp - zlib

文章目录 openssl3.2 - exp - zlib概述笔记命令行实现程序实现备注 - 压缩时无法base64压缩时无法带口令压缩实现 - 对buffer进行压缩和解压缩测试效果工程实现main.cppCOsslZlibBuffer.hCOsslZlibBuffer.cpp总结END openssl3.2 - exp - zlib 概述 客户端和服务端进行数据交换…

数据库的负载均衡,高可用实验

一 高可用负载均衡集群数据库实验 1.实验拓扑图 2.实验准备(同一LAN区段)(ntp DNS) 客户端:IP:192.168.1.5 下载:MariaDB 负载均衡器:IP:192.168.1.1 下载:keepalived ipvsadm I…

鸿蒙实战开发-如何实现选择并查看文档与媒体文件

介绍 应用使用ohos.file.picker、ohos.multimedia.mediaLibrary、ohos.file.fs 等接口,实现了picker拉起文档编辑保存、拉起系统相册图片查看、拉起视频并播放的功能。 效果预览 使用说明: 在首页,应用展示出最近打开过的文档信息&#xf…

【JavaWeb】Servlet与过滤器

目录 ServletServlet做了什么JSP与Servlet的关系主要Servlet API介绍如何创建ServletServlet中主要方法ServletRequestServletResponseServletConfig Servlet生命周期Servlet创建Servlet部署与运行 ServletConfig类ServletConfig类的三大作用 ServletContext类ServletContext类…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之八 简单视频素描效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之八 简单视频素描效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之八 简单视频素描效果 一、简单介绍 二、简单指定视频某片段快放效果实现原理 三、简单指定视频某…

web安全学习笔记(9)

记一下第十三课的内容。 准备工作:在根目录下创建template目录,将login.html放入其中,在该目录下新建一个reg.html。在根目录下创建一个function.php 一、函数声明与传参 PHP中的函数定义和其他语言基本上是相同的。我们编辑function.php …

stm32f103c8t6学习笔记(学习B站up江科大自化协)-看门狗【WDG】

硬件部分 一、看门狗简介 看门狗-WDG(watchdog) 看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态…

相机参数的意义

相机标定的意义: 相机标定:使用带有pattern的标定板来求解相机参数的过程;用一个简化的数学模型来代表复杂的三维到二维的成像过程;相机参数包括:相机内参(焦距等),外参&#xff08…

为什么需要SOCKS代理?

在数字化时代🌐,随着网络安全威胁的不断演进和增加,保护个人隐私和数据安全成为了互联网用户的一大挑战🛡️。在寻求增强在线安全和隐私的解决方案时,SOCKS代理成为了一个关键的技术工具🔑。本文旨在详细探…

代码随想录:栈与队列4-6

20.有效的括号 题目 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一…

什么是容器安全,该怎么进行容器安全的检测防护

随着容器技术的迅速发展和普及,越来越多的企业开始采用容器化解决方案来优化应用部署、提高资源利用率和降低成本。然而,在对大规模部署和使用容器应用来提升业务系统开发速度的时候,大量的数据对象、多种安全风险都需要检测,容器…

Spark_SparkSql写入Oracle_Undefined function.....将长字符串写入Oracle中方法..

在使用Spark编写代码将读库处理然后写入Oracle中遇到了诸多小bug,很磨人。shit!! 实测1:TO_CLOB(a3) 代码样例 --这是一个sparksql写入hive的一个小逻辑,我脱敏了噻 SELECT a1, a2, TO_CLOB(a3) AS clob_data, TO_DATE(a4) AS time FROM table1 WHERE…

外包干了15天,技术倒退明显

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

海外软文通稿代发 - 大舍传媒

引言 在当今高度信息化的时代,企业和个人品牌形象的塑造与传播变得越来越重要。为了在国际舞台上获得更大的竞争优势,许多企业和品牌纷纷将视线投向了国外市场。而在这个过程中,专业的软文通稿代发服务成为了他们的得力助手。本文将向您介绍…

恒创科技:香港服务器CPU核心数如何选?越多越好吗?

​  谈到 CPU“核心”是完成所有处理的组件,程序能否顺利运行的第一因素是你有多少个核心。但由于不同的计算任务占用不同的资源,所以如果您打算简单地创建小型网站或者其他请求处理数据也不高的业务,那么您的基本型号应该包含 1、2 核已经…

云计算重要概念之:虚拟机、网卡、交换机、路由器、防火墙

一、虚拟机 (Virtual Machine, VM) 1.主流的虚拟化软件: 虚拟化软件通过在单个物理硬件上创建和管理多个虚拟环境(虚拟机),实现资源的高效利用、灵活部署、隔离安全以及便捷管理,是构建云计算和现代化数据中心的核心…

【电控笔记4】拉普拉斯-传递函数-pid

数据标幺化 拉普拉斯变换 欧拉公式 常见s变换 s变换性质 pid分析 p控制,存在稳态误差 可以求出p的取值范围p>-1,否则发散 pi消除稳态误差 把kp换成Gs 只用pi控制,不加微分的原因: 微分之后,噪声增大高频噪声频率…

【力扣】104. 二叉树的最大深度、111. 二叉树的最小深度

104. 二叉树的最大深度 题目描述 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3 示例 2: 输…