Selenium + Python 自动化测试06(frame操作方法)

news2024/11/24 19:02:02

        上一篇我们讲述了特殊元素的操作方法,本篇接着讲一些可能遇到的其它操作方法。

如frame操作。

Frame 标签有Frameset、Frame、Iframe 3种,Frameset可以直接照常进行元素定位。Frame、Iframe需要驱动切换到对应的frame才可以定位到。否则 ,会报错。

1、直接定位frame内元素

如下以163邮箱为例

driver = self.driver

driver.get("https://mail.163.com/")

driver.maximize_window()

#定位用户名输入框

driver.find_element_by_xpath("//*[@class='j-inputtext dlemail j-nameforslide']").send_keys("zhwzh0311")

time.sleep(3)

这样执行报错:定位不到元素

2、驱动跳转到对应frame

frame 默认使用id、name定位的,看下面iframe 没有固定id,

这个可以使用8大定位方法,tagname定位

<iframe name="" frameborder="0" id="x-URS-iframe1722999269216.9436" scrolling="no" style="width: 100%; height: 100%; border: none; background: none;" src="https://dl.reg.163.com/webzj/v1.0.1/pub/index_dl2_new.html?cd=%2F%2Fmimg.127.net%2Fp%2Ffreemail%2Findex%2Funified%2Fstatic%2F2024%2F%2Fcss%2F&amp;cf=urs.163.918051fb.css&amp;MGID=1722999269216.9436&amp;wdaId=&amp;pkid=CvViHzl&amp;product=mail163"></iframe>

增加跳转,就可以解决上面报错的问题:

#切换frame,对应iframe没有固定id
driver.switch_to.frame(driver.find_element('tag name', 'iframe'))
 

driver = self.driver

driver.get("https://mail.163.com/")

driver.maximize_window()

#切换frame,对应iframe没有固定id

driver.switch_to.frame(driver.find_element('tag name', 'iframe'))

#定位用户名输入框

driver.find_element_by_xpath("//*[@class='j-inputtext dlemail j-nameforslide']").send_keys("zhwzh0311")

time.sleep(3)

上面的代码驱动已经切换到frame内部,返回的话用:

driver. switch_to.default_content()

如下面代码,返回驱动后就定位 不到了。如下图所示。

#切换frame,对应iframe没有固定id

driver.switch_to.frame(driver.find_element('tag name','iframe'))

#定位用户名输入框

driver.find_element_by_xpath("//*[@class='j-inputtext dlemail j-nameforslide']").send_keys("zhwzh0311")

time.sleep(3)

driver.switch_to.default_content()

driver.find_element_by_xpath("//*[@class='j-inputtext dlemail j-nameforslide']").send_keys("zhwzh0311")

        以上就是frame内元素定位方法。当我们看到定位失败的情况下,可以考虑是不是元素在frame内需要切换即可。

        每天进步一点点,加油!

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

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

相关文章

Python基础-->数据类型/变量/运算符

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.变量 变量是一个保存数据的容器&#xff0c;变量通常分为变量和常量&#xff0c;常量中存储的是固定数据&#xff0c;而变量中存储的数据是可变的。 # 定义常量 PI 3.14159# 定义变量 rad…

service调mapper

为什么要用连接池 springboot项目连接池是什么 数据库如何配置 数据库如何开发 步骤&#xff1a; 1、先得到这个类hikariDataSource对象 HikariDataSource hikariDataSource new HikariDataSource();2、用这个类调set方法获取url,name,pwd等 //连接数据库的基本信息 HikariD…

动态规划数学问题前缀思想

前言&#xff1a;看到这个题目&#xff0c;感觉有点像动态规划&#xff0c;因为数据量有点大&#xff0c;不可能去枚举所有的情况 我们定义 dp[ i ] 为以 a[ i ] 结尾的方案数&#xff0c;用变量qian 记录 i 之前的所有枚举的情况 如果 a[ i ] 是奇数&#xff0c;那么 qian q…

浅谈面向数据报的协议-UDP协议

1.什么是网络协议 协议用通俗的话来说就是约定&#xff0c;因为计算机之间的传输媒介是光信号和电信号. 通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息. 要想传递各种不同的信息, 就需要约定好双方的数据格式. 计算机生产厂商有很多; 计算机操作系统, …

AI人工智能的发展历史

人工智能的发展历史 在人工智能&#xff08;AI&#xff09;的发展历史中&#xff0c;我们见证了一系列巨大的突破和进展。人工智能是一门研究如何使计算机能够模仿人类智能的科学与技术。其发展可以追溯到1950年代&#xff0c;而如今&#xff0c;AI已经渗透到我们生活的各个领域…

JNPF快速开发平台让业务活起来

在当前数字化转型的浪潮中&#xff0c;企业正面临着前所未有的挑战&#xff0c;这些挑战主要体现在两个方面&#xff1a;一是需要迅速地响应市场上的各种变化&#xff0c;二是必须不断提升业务流程的效率。传统的软件开发模式通常伴随着时间消耗长、成本投入高以及难以迅速适应…

Docker网络模式及通信

一、Docker默认的网络通信 1.1 Docker安装后默认的网络设置 Docker服务器安装完成之后&#xff0c;默认在每个宿主机会生成一个名称为docker0的网卡&#xff0c;其IP地址都是172.17.0.1/16 [rootubuntu1804 ~]#apt -y install bridge-utils [rootubuntu1804 ~]#brctl show 另…

2024年新SCI顶刊算法红嘴蓝鹊优化器RBMO优化Transformer模型的多变量时间序列预测

matlab R2024a以上 一、数据集 二、2024年新SCI顶刊算法红嘴蓝鹊优化器RBMO 红嘴蓝鹊优化算法(Red-billed blue magpie optimizer, RBMO)是一种新型的元启发式算法&#xff08;智能优化算法&#xff09;&#xff0c;灵感来源于红嘴蓝鹊的合作、高效的捕食行为。 该成果由Shen…

005集——运算符和循环——C#学习笔记

C# 提供了许多运算符。 其中许多都受到内置类型的支持&#xff0c;可用于对这些类型的值执行基本操作。 这些运算符包括以下组&#xff1a; 算术运算符&#xff0c;将对数值操作数执行算术运算比较运算符&#xff0c;将比较数值操作数布尔逻辑运算符&#xff0c;将对 bool 操作…

基于医院临床数据中心而建立的ADR药品智能监测上报系统,源码支持二次开发

ADR监测上报系统是基于医院临床数据中心而建立&#xff0c;运用信息技术实现药品不良反应的智能监测、报告管理、知识库查询、统计分析等功能。 系统自动提取不良反应报告数据&#xff0c;主动实时监测临床发生的不良反应&#xff0c;第一时间反馈到ADR监测组&#xff0c;及时…

邀请函 I 松下信息和望繁信科技邀您参加「数智时代下大数据应用的“道”与“术”」闭门会议

在数字化浪潮席卷全球的今天&#xff0c;大数据与智能化的结合成为企业成功的关键。为了深入探讨这一重要议题&#xff0c;松下信息系统&#xff08;上海&#xff09;有限公司&#xff08;简称“松下信息”&#xff09;与上海望繁信科技有限公司&#xff08;简称“望繁信科技”…

2024年最新AI算力厂商排名!

随着人工智能技术的飞速发展&#xff0c;AI算力已成为衡量一个国家或企业在AI领域竞争力的重要指标。2024年&#xff0c;全球AI算力领域再度迎来新的突破与变革&#xff0c;不仅体现在技术创新的深度和广度上&#xff0c;更在应用场景和市场价值上展现出巨大的潜力。 众厂商排名…

扩展01:企业级Nginx+Keepalived双主架构实战

NginxKeepalived主备架构总是会有一台服务器处于空闲状态&#xff0c;这样会造成资源的浪费&#xff0c;所以为了能够将两台服务器都利用起来&#xff0c;我们需要借助NginxKeepalived双主架构来实现。即是对外两个VIP地址&#xff0c;同时接收请求。 一&#xff1a;Nginxkeep…

生成订单幂等性(防止订单重复提交)

订单唯一性(防止重复下单)方案 重复下单产生原因&#xff1a; 客户端原因&#xff1a; 比如下单的按键在点按之后&#xff0c;在没有收到服务器请求之前&#xff0c;按键的状态没有设为已禁用状态&#xff0c;还可以被按。又或者&#xff0c;在触摸屏下&#xff0c;用户手指…

15秒完成作文自动批阅!璞公英与恩施三中正式签约试点,AI 大模型自动批阅+精准教学助力学校教育升级!

在国家大力推动教育数字化战略行动的浪潮中&#xff0c;通过科技创新赋能教育&#xff0c;促进教育公平与质量双提升的重要签约仪式&#xff0c;于恩施市第三高级中学隆重举行。一直以来&#xff0c;恩施市第三高级中学积极寻求创新与突破&#xff0c;引入璞公英的先进教育技术…

MyBatis动态SQL标签2

4.choose (when, otherwise)标签是使用举例 类似switch...case&#xff0c;从上到下匹配&#xff0c;找到匹配的条件&#xff0c;就结束匹配其他的&#xff01; 5.set标签是使用举例 set这个标签是用在更新操作上的 set标签代替sql中的set关键字&#xff0c;可以把set语句后多…

DC-8靶机渗透测试

DC-8靶机 文章目录 DC-8靶机信息收集web渗透获取权限权限提升靶机总结 信息收集 1.nmap扫描出主机IP为192.168.78.156 开放80和22端口&#xff0c;没扫出来什么漏洞&#xff0c;但是发现robots.txt文件&#xff0c;给出了后台登录地址/usr/login web渗透 1.登陆到主页发现是…

Java有哪些数据类型?

Java有哪些数据类型 1. 基本数据类型 2. 引用数据类型 3. 总结 &#x1f388;边走、边悟&#x1f388;迟早会好 Java 中的数据类型分为两大类&#xff1a;基本数据类型&#xff08;primitive types&#xff09;和引用数据类型&#xff08;reference types&#xff09;。 …

代发考生战报:8月6号 西安 ,HCIE存储H13-629考试通过

代发考生战报&#xff1a;8月6号 西安 &#xff0c;HCIE存储H13-629考试通过&#xff0c;目前这个考试变题了&#xff0c;我找客服买的包过服务&#xff0c;有老师指导&#xff0c;考试通过了&#xff0c;里面的新题我看了&#xff0c;我是一点也不会&#xff0c;自己考的还是不…

Java代码混淆加密之Xjar

使用背景 代码安全性需求&#xff1a;在交付给客户或第三方时&#xff0c;保护源代码不被泄露或反编译是许多企业的核心需求。尤其是在竞争激烈的市场中&#xff0c;代码泄露可能导致严重的经济损失。 传统工具的局限性&#xff1a;虽然有很多混淆和加密工具&#xff0c;比如 …