Web控件进阶交互
Web控件进阶交互
测试时常需要模拟键盘或鼠标操作,可以用Python的ActionChains来模拟。ActionChains是Selenium提供的一个子类,用于生成和执行复杂的用户交互操作,允许将一系列操作链接在一起,然后一次性执行。
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys# 初始化WebDriver和ActionChains
driver = webdriver.Chrome()
actions = ActionChains(driver)# 打开一个网页
driver.get("https://www.example.com")
- 移动到元素并点击
element = driver.find_element(By.ID, "example_id")
actions.move_to_element(element).click().perform()
- 右键点击
actions.context_click(element).perform()
- 双击
actions.double_click(element).perform()
- 拖放
source = driver.find_element(By.ID, "source_id")
target = driver.find_element(By.ID, "target_id")
actions.drag_and_drop(source, target).perform()
- 拖放到指定位置
actions.click_and_hold(source).move_to_element(target).release().perform()
- 键盘输入
actions.send_keys("Hello World!").perform()
- 组合键操作
actions.key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()
网页frame于多窗口处理
测试时要定位Web内的一个元素时,若定位不到这个元素,就需要考虑是不是浏览器内嵌了一个frame窗口,或者要找的元素在新打开的窗口。为了解决这个问题就需要进行frame切换或者窗口切换操作。
frame类似于在原有主HTML的基础上又嵌套了一个HTML,嵌套的HTML是独立的,不影响主HTML。执行Web测试打开一个页面时,光标的定位是在主页面中,如果主页面是由多个frame组成的,那么光标无法直接定位到具体的元素,需要切换到对应的frame中。
iframe解析
from selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
driver.get("https://www/example.com")
通过iframe索引切换
可以通过iframe在页面中的索引来切换。索引从0开始
driver.switch_to.frame(0)
通过 iframe的名称或ID切换
如果iframe有name或id属性,可以通过这些属性来切换
driver.switch_to.frame("iframe_name")
通过iframe的WebElement切换
先找到iframe元素,然后通过该元素切换
iframe_element = driver.find_element(By.TAG_NAME, "iframe")
driver.switch_to.frame(iframe_element)
嵌套iframe的切换
如果iframe内部还有iframe,需要先切换到外层iframe,然后再切换到内层的iframe
outer_iframe = driver.find_element(By.ID, "outer_iframe_id")
driver.switch_to.frame(outer_iframe)
inner_iframe = driver.find_element(By.ID, "inner_iframe_id")
driver.switch_to.frame(inner_iframe)# 切换到外层iframe
driver.switch_to.parent_frame()
切换回主文档
无论当前再哪个iframe中,都可以直接切换到主文档
driver.switch_to.default_content()
多窗口处理
元素有属性,浏览器的窗口也有属性,浏览器窗口的属性用句柄(handle)来识别。当用浏览器打开一个窗口时,就需要用句柄来操作这个窗口。
获取句柄
# 获取当前窗口的句柄
cnt_handle = driver.current_window_handle
# 获取所有窗口的句柄
all_handles = driver.window_handles
句柄切换
driver.switch_to.window(target_handle)
Selenium对多浏览器处理
自动化测试过程中,往往需要对不同的浏览器做兼容性测试,可以通过对测试用例的修改实现对不同浏览器的自动化兼容性测试。实现对不同浏览器的自动化兼容性测试,需要先将各个浏览器的驱动在PC端配置好。
参数化多浏览器测试
from selenium import webdriver
from selenium.webdriver.common.by import By
import timedef test_with_browser(browser_name):if browser_name == "chrome":driver = webdriver.Chrome()elif browser_name == "firefox":driver = webdriver.Firefox()elif browser_name == "edge":driver = webdriver.Edge()elif browser_name == "safari":driver = webdriver.Safari()else:raise ValueError(f"Unsupported browser: {browser_name}")driver.get("https://www.baidu.com")print(f"{browser_name.capitalize()} - Title: {driver.title}")driver.quit()if __name__ == "__main__":for browser in ["chrome", "firefox", "edge", "safari"]:test_with_browser(browser)
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
Web控件进阶交互
Web控件进阶交互 测试时常需要模拟键盘或鼠标操作,可以用Python的ActionChains来模拟。ActionChains是Selenium提供的一个子类,用于生成和执行复杂的用户交互操作,允许将一系列操作链接在一起,然后一次性执行。 from selenium im…...
![](https://img-blog.csdnimg.cn/img_convert/98cc41498bd6285e0e07bbbcae53d1aa.png)
基于SpringBoot的校园疫情防控系统
你好,我是专注于计算机科学与技术的研究者。如果你对我的工作感兴趣或有任何问题,欢迎随时联系我。 开发语言:Java 数据库:MySQL 技术:SpringBoot框架,B/S架构 工具:Eclipse,Mav…...
![](https://i-blog.csdnimg.cn/direct/726c6358bd864c3180be3bfb5890621f.png)
elasticsearch 查询超10000的解决方案
前言 默认情况下,Elasticsearch集群中每个分片的搜索结果数量限制为10000。这是为了避免潜在的性能问题。 但是我们 在实际工作过程中时常会遇到 需要深度分页,以及查询批量数据更新的情况 问题:当请求form size >10000 时,…...
![](https://i-blog.csdnimg.cn/direct/b1cd87a7e82f4de2be91e4df2216cd52.png)
SpringCloud集成kafka集群
目录 1.引入kafka依赖 2.在yml文件配置配置kafka连接 3.注入KafkaTemplate模版 4.创建kafka消息监听和消费端 5.搭建kafka集群 5.1 下载 kafka Apache KafkaApache Kafka: A Distributed Streaming Platform.https://kafka.apache.org/downloads.html 5.2 在config目录下做…...
![](https://i-blog.csdnimg.cn/direct/c3aeb48cb60a4466aec5c1ea564be8ff.png)
Macos 远程登录 Ubuntu22.04 桌面
这里使用的桌面程序为 xfce, 而 gnome 桌面则测试失败。 1,安装 在ubuntu上,安装 vnc server与桌面程序xfce sudo apt install xfce4 xfce4-goodies tightvncserver 2,第一次启动和配置 $ tightvncserver :1 设置密码。 然后修改配置:…...
![](https://www.ngui.cc/images/no-images.jpg)
第十届MathorCup高校数学建模挑战赛-A题:无车承运人平台线路定价问题
目录 摘 要 1 问题重述 1.1 研究背景 1.2 研究问题 2 符号说明与模型假设 2.1 符号说明 2.2 模型假设 3 问题一:模型建立与求解 3.1 问题分析与思路 3.2 模型建立 3.2.1 多因素回归模型 3.3 模型求解 3.3.1 数据预处理 3.3.2 重要度计算 4 问题二:模型建立与求…...
![](https://i-blog.csdnimg.cn/direct/e2a5dff72bcf4242b473e5bbd0ab7134.png)
在分布式环境中,怎样保证 PostgreSQL 数据的一致性和完整性?
文章目录 在分布式环境中保证 PostgreSQL 数据的一致性和完整性一、数据一致性和完整性的重要性二、分布式环境对数据一致性和完整性的挑战(一)网络延迟和故障(二)并发操作(三)数据分区和复制 三、保证 Pos…...
![](https://www.ngui.cc/images/no-images.jpg)
RabbitMq如何保证消息的可靠性和稳定性
RabbitMq如何保证消息的可靠性和稳定性 rabbitMq不会百分之百让我们的消息安全被消费,但是rabbitMq提供了一些机制来保证我们的消息可以被安全的消费。 消息确认 消息者在成功处理消息后可以发送确认(ACK)给rabbitMq,通知消息已…...
![](https://i-blog.csdnimg.cn/direct/3ec548a611b94e72845d5fa08cac7548.png)
druid(德鲁伊)数据线程池连接MySQL数据库
文章目录 1、druid连接MySQL2、编写JDBCUtils 工具类 1、druid连接MySQL 初学JDBC时,连接数据库是先建立连接,用完直接关闭。这就需要不断的创建和销毁连接,会消耗系统的资源。 借鉴线程池的思想,数据连接池就这么被设计出来了。…...
![](https://i-blog.csdnimg.cn/direct/fc122e97eb034bae830e7dd67463cb33.png)
观察者模式的实现
引言:观察者模式——程序中的“通信兵” 在现代战争中,通信是胜利的关键。信息力以网络、数据、算法、算力等为底层支撑,在现代战争中不断推动感知、决策、指控等各环节产生量变与质变。在软件架构中,观察者模式扮演着类似的角色…...
![](https://www.ngui.cc/images/no-images.jpg)
Eureka: Netflix开源的服务发现框架
在微服务架构中,服务发现是一个关键组件,它允许服务实例之间相互发现并进行通信。Eureka是由Netflix开源的服务发现框架,它是Spring Cloud体系中的核心组件之一。Eureka提供了服务注册与发现的功能,支持区域感知和自我保护机制&am…...
![](https://www.ngui.cc/images/no-images.jpg)
go-基准测试
基准测试 Demo // fib_test.go package mainimport "testing"func BenchmarkFib(b *testing.B) {for n : 0; n < b.N; n {fib(30) // run fib(30) b.N times} }func fib(n int) int {if n 0 || n 1 {return n}return fib(n-2) fib(n-1) }benchmark 和普通的单…...
![](https://i-blog.csdnimg.cn/direct/57e2bb8ce3884877a6c6353ca79a48f0.png#pic_center)
线性代数|机器学习-P23梯度下降
文章目录 1. 梯度下降[线搜索方法]1.1 线搜索方法,运用一阶导数信息1.2 经典牛顿方法,运用二阶导数信息 2. hessian矩阵和凸函数2.1 实对称矩阵函数求导2.2. 线性函数求导 3. 无约束条件下的最值问题4. 正则化4.1 定义4.2 性质 5. 回溯线性搜索法 1. 梯度…...
![](https://i-blog.csdnimg.cn/direct/86bbaac78e164685bb59ddf3c281c19a.png)
SQL,python,knime将数据混合的文字数字拆出来,合并计算实战
将下面将数据混合的文字数字拆出来,合并计算 一、SQL解决: ---创建表插入数据 CREATE TABLE original_data (id INT AUTO_INCREMENT PRIMARY KEY,city VARCHAR(255),value DECIMAL(10, 2) );INSERT INTO original_data (city, value) VALUES (上海0.5…...
![](https://www.ngui.cc/images/no-images.jpg)
mac ssh连接工具
在Mac上,有多个SSH连接工具可供选择,这些工具根据其功能和适用场景的不同,可以满足不同用户的需求。以下是一些推荐的SSH客户端软件:12 iTerm2:这是一款功能强大的终端应用程序,提供了丰富的功能和定制选项…...
![](https://img-blog.csdnimg.cn/img_convert/6f634429a6f2d3a7a211da63c63c574e.jpeg)
阿里通义音频生成大模型 FunAudioLLM 开源
简介 近年来,人工智能(AI)技术的进步极大地改变了人类与机器的互动方式,特别是在语音处理领域。阿里巴巴通义实验室最近开源了一个名为FunAudioLLM的语音大模型项目,旨在促进人类与大型语言模型(LLMs&…...
![](https://img-blog.csdnimg.cn/img_convert/115ccdbedea07dad97b5fe00203d2539.png)
通用详情页的打造
背景介绍 大家都知道,详情页承载了站内的核心流量。它的量级到底有多大呢? 我们来看一下,日均播放次数数亿次,这么大的流量,其重要程度可想而知。 在这样一个页面,每一个功能都是大量业务的汇总点。 作为…...
![](https://img-blog.csdnimg.cn/20200927163243947.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNTkzNjQ2,size_16,color_FFFFFF,t_70#pic_center)
java内部类的本质
定义在类内部,可以实现对外部完全隐藏,可以有更好的封装性,代码实现上也往往更为简洁。 内部类可以方便地访问外部类的私有变量,可以声明为private从而实现对外完全隐藏。 在Java中,根据定义的位置和方式不同…...
![](https://www.ngui.cc/images/no-images.jpg)
vue3 学习笔记08 -- computed 和 watch
vue3 学习笔记08 – computed 和 watch computed computed 是 Vue 3 中用于创建计算属性的重要 API,它能够根据其它响应式数据动态计算出一个新的值,并确保在依赖数据变化时自动更新。 基本用法 squaredCount 是一个计算属性,它依赖于 count…...
![](https://img-blog.csdnimg.cn/img_convert/bdc344a6eaf788051ba00772ec781e3a.webp?x-oss-process=image/format,png)
Python-PLAXIS自动化建模技术与典型岩土工程案例
有限单元法在岩土工程问题中应用非常广泛,很多软件都采用有限单元解法。在使用各大软件进行数值模拟建模的过程中,岩土工程中的各种问题(塑性、渗流、固结、动力、稳定安全、热力TM),一步一步地搭建自己的Plaxis模型&a…...
![](https://www.ngui.cc/images/no-images.jpg)
license系统模型设计使用django models
User (用户)License (许可证)Product (产品)LicenseAssignment (许可证分配) 简单的模型定义: from django.db import models from django.contrib.auth.models import Userclass Product(models.Model):name models.CharField(max_length255)description model…...
![](https://i-blog.csdnimg.cn/direct/d550a4c218434c0ab469a2f232a3bb3f.png)
【通信协议-RTCM】MSM语句(1) - 多信号GNSS观测数据消息格式
注释: RTCM响应消息1020为GLONASS星历信息,暂不介绍,前公司暂未研发RTCM消息类型版本的DR/RTK模块,DR/RTK模块仅NMEA消息类型使用 注释: 公司使用的多信号语句类型为MSM4&MSM7,也应该是运用最广泛的语句…...
![](https://www.ngui.cc/images/no-images.jpg)
vue3-vite-pinia模板
模板说明 下载 git clone https://github.com/AIxiaoHanBao/vue-template.gitmodule参数 node版本 16 UI组件库 element-plus 持久化 pinia 网络请求 axios 路由 vue-router 使用说明 权限管理目录access资源目录assets组件目录components页面目录pages网络请求目录re…...
![](https://i-blog.csdnimg.cn/direct/50e9a83ca61149228cb81798980d98f1.png)
华为HCIP Datacom H12-821 卷38
1.多选题 下面关于 BGP中的公认属性的描述,正确的是 A、公认必遵属性是所有BGP路由器都识别,且必须存在于Updata消息中心 B、BGP必须识别所有公认属性 C、公认属性分为公认必遵和可选过渡两种 D、公认任意属性是所有BGP造由器都可以识别,…...
![](https://i-blog.csdnimg.cn/direct/a4989eebcbeb44dea3dfb400f3da93cf.png)
C语言求10进制转2进制(除2取余法)
1.思路:除2取余法,也就是说用除以2取余来将10进制数转换为二进制 2.两种代码实现,这里用了两,一个递归一个非递归。 递归是一种编程技术,其中一个函数直接或间接地调用自己。递归通常用于解决那些可以被分解为更小的、…...
![](https://www.ngui.cc/images/no-images.jpg)
PHP 调用淘宝详情 API 接口的方法与实践
以下是关于“PHP 调用淘宝详情 API 接口的方法与实践”的一篇文章示例: PHP 调用淘宝详情 API 接口的方法与实践 在当今的电商时代,获取淘宝商品的详情信息对于许多开发者来说是一项重要的任务。使用 PHP 语言来调用淘宝详情 API 接口,可以…...
![](https://www.ngui.cc/images/no-images.jpg)
风景区服务热线系统:智能化时代的旅游新选择
一、引言 1 、风景区服务热线系统的概念 风景区服务热线系统是指为游客提供实时旅游信息咨询、投诉处理、紧急救援等一系列服务的电话和网络平台。它不仅是景区与游客之间的重要沟通桥梁,也是提升游客满意度、优化景区管理的重要手段。 2 、智能化时代对旅游服务…...
![](https://www.ngui.cc/images/no-images.jpg)
Linux修改配置文件后无法使用命令或无法进入桌面
如果你是修改了配置文件,如 sudo vim /etc/profile重启无数次发现无法进入桌面,不要着急重装系统!!,怎么造成的怎么改就行了 以下方案需要root密码,忘记密码详见:Linux忘记root密码怎么办 一…...
![](https://img-blog.csdnimg.cn/img_convert/dead6386ba8ad3cc285dc70f5287e28f.jpeg)
安卓14中Zygote初始化流程及源码分析
文章目录 日志抓取结合日志与源码分析systemServer zygote创建时序图一般应用 zygote 创建时序图向 zygote socket 发送数据时序图 本文首发地址 https://h89.cn/archives/298.html 最新更新地址 https://gitee.com/chenjim/chenjimblog 本文主要结合日志和代码看安卓 14 中 Zy…...
![](https://www.ngui.cc/images/no-images.jpg)
等保一体机 | 什么是等保一体机?一台机器就能过等保吗?
什么是等保一体机? 对于中小型企业来说,他们在接触到等保的条件下,可能会觉得成本太高了,毕竟整改的时候,几台安全设备下来报价就几十w。 也许有些人会听说过等保一体机 那么什么是等保一体机呢? 等保一…...
![](/images/no-images.jpg)
贵州省城乡和建设厅网站/百度网页搜索
微软手机的信号显示...
![](https://img-blog.csdnimg.cn/a73f5b3e202f4b4da4206dc97800b901.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6IOh5YiaMjAyMQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
手机网站html5模版/推广网站的方法有哪些
点击跳转到视频教程 1.创建模态对话框 在生成的Button点击事件中加入 创建模态对话框的代码 // IDD_DIALOG1d 代表刚才在资源文件中创建的对话框的ID CDialog dlg(IDD_DIALOG1); dlg.DoModal();运行,点击创建模态对话框按钮,就会创建出来一个模态对话框…...
![](/images/no-images.jpg)
长沙网站建设多少钱/宁波正规seo快速排名公司
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 本文来自云社区翻译社,作者Hans362 您可能已经熟悉Asterisk,一个广泛部署的开源Telephony框架。如果你不太熟悉,你应该适当了解一下。这是一个非常酷的软件。可以部署Ast…...
![](/images/no-images.jpg)
做商铺的网站有那些/百度下载官方下载安装
python的mysql操作参照 python操作mysql数据库 ,python对mysql的操作基本都可以在教程中学会,由于初次用python使用mysql,经历了一些坑,为了警醒自己和帮助小白少走弯路,在博客中记录下python调用mysql的注意事项&a…...
![](/images/no-images.jpg)
如何做招生网站/短链接
1. electron:跨平台,离线优先的桌面端开发框架。 2. electron是由俩种进程组成,包括主进程和0个或n个渲染进程。 2.1 主进程:承担应用的生命周期(包括启动,退出,准备,正在切换到后台…...
![](https://img-blog.csdnimg.cn/img_convert/f622c0b99f9f8173b7a709ac26c15b42.png)
陕西最新消息/广州网站设计专注乐云seo
无论是处在青春期的学生,还是走向社会的成年人,随着生活水平的提高,纵欲的人越来越多。多数人都是从初中开始有不良习惯,那么我来分析情绪暴躁焦虑和容貌变丑两个方面。暴躁易怒1.情绪暴躁易怒不知从何时起,本来脾气很…...