selenium有多个frame页时的操作方法(5)

ops/2024/10/21 6:39:17/

图片

之前文章我们提到,在webdriver.WebDriver类有一个switch_to方法,通过switch_to.frame()可以切换到不同的frame页然后才再定位某个元素做一些输入/点击等操作。

比如下面这个测试网站有2个frame页:http://www.sahitest.com/demo/framesTest.htm,每个frame页的元素是一样的。

图片

检查下Link Test的元素信息,发现两个frame,在每个frame下面都有这个元素的相同信息。

图片

每个frame中的相同的元素信息都一样:

图片

图片

switch_to.frame方法

当我们定义好driver对象,打开网页并使用driver.switch_to.frame()方法切换frame时,该方法其实调用了selinium中的SwitchTo类中的frame方法:

from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Safari()
# 打开一个网页
driver.get("http://www.sahitest.com/demo/framesTest.htm")

图片

方法中的参数frame_reference可以是fame的name,或者代表frame的数字(从0开始),或者是该frame元素位置,如函数中的的介绍。

  • driver.switch_to.frame('frame_name')
  • driver.switch_to.frame(1)
  • driver.switch_to.frame(driver.find_elements(By.TAG_NAME, "iframe")[0])

示例:分别打开网页上面和下面对应的‘Link Test’链接

from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Safari()
# 打开一个网页
driver.get("http://www.sahitest.com/demo/framesTest.htm")
driver.maximize_window()
sleep(2)#先切换到第1个frame
driver.switch_to.frame(0)
sleep(1)
#点击TestLink链接
driver.find_element(By.XPATH,'/html/body/table/tbody/tr/td[1]/a[1]').click()
sleep(2)#完成后 先返回上一级frame或者默认frame 然后才能切换到第2个frame
#以下两个方法都可使用
driver.switch_to.default_content()
#driver.switch_to.parent_frame()#切换第2个frame
driver.switch_to.frame(1)
sleep(1)
driver.find_element(By.XPATH,'/html/body/table/tbody/tr/td[1]/a[1]').click()
sleep(4)

共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳。

----感谢读者的阅读和学习,谢谢大家。


http://www.ppmy.cn/ops/125472.html

相关文章

docker详解介绍+基础操作 (四)容器镜像

一.镜像结构和原理 Docker 镜像是 Docker 技术的核心组成部分之一,它用于封装应用程序及其依赖项,以便在任何支持 Docker 的环境中运行。了解 Docker 镜像的结构和原理对于有效使用 Docker 至关重要。以下是对 Docker 镜像结构和原理的详细介绍。 Dock…

开放式耳机咋选?开放式蓝牙耳机排行榜五强推荐推荐

​在当今的耳机市场上,开放式耳机因其时尚的外观和舒适的佩戴体验,已经成为广受欢迎的日常选择。然而,面对众多品牌和参差不齐的质量,选择一款合适的开放式耳机确实让人头疼。作为一名拥有三年耳机评测经验的博主,同时…

2024系统分析师考试---数据仓库相关概念

前言: 传统的操作型数据库主要面向业务的,所执行的操作基本上也是联机事务处理,随着企业规模的增长,历史积累的数据越来越多,如何利用历史数据来为未来决策服务,就显得越来越重要了,而数据仓库就…

系统架构师备考记忆不太清楚的点-信息系统-需求分析

霍尔三维结构 逻辑维:解决问题的逻辑过程 过程有明确问题、确立目标、系统综合、系统分析、优化、系统决策、实施计划 时间维:工作进度 这个纬度则是做工作计划的输出 有 规划阶段、拟定方案、研制阶段、生产阶段、安装阶段、运行阶段、更新阶段 知…

golang语法

参考链接&#xff1a;https://www.runoob.com/go/ 创建变量 // 3种方法 var a int a : 10 // 类型推断 a : make() // 复合类型循环 // 3种循环 for i : 0; i < 10; i {// 循环体} // 传统for循环 for index, num : range nums {// 循环体} // nums是可迭代的复合类型…

个人网络安全的几个重点与防御

1 浏览器 firefox 这是第一选择 如果你真的不明白可以找找各个浏览器漏洞 mail 的危险的 来自与代理和漏洞 浏览器溢出漏洞 实时注意更新就可以 2 防火墙 大家都用windows 只需在 gpedit.msc 设置 但有什么未知漏洞就不得而知了 因为美国的计划问题 网络端口溢出漏洞 但…

Gradio 全指南 | 轻松构建和托管机器学习界面

唠唠闲话 Gradio 是专为机器学习设计的轻量级 Python 库&#xff0c;它以简洁直观的方式将机器学习模型与用户界面相结合。利用 Gradio&#xff0c;用户可以轻松地通过图形界面输入数据并查看模型输出。此外&#xff0c;Gradio 还具备分享功能&#xff0c;极大地简化了模型在网…

串接模式对网络性能的影响

串接模式可能会对网络性能产生以下影响&#xff1a; 一、延迟增加 1. 设备处理时间 - 当网络流量经过串接设备时&#xff0c;设备需要对数据包进行检查、分析和处理。这个过程会耗费一定的时间&#xff0c;从而导致数据包在网络中的传输延迟增加。例如&#xff0c;防火墙需要…