Web自动化之iframe切换
2024-09-06 17:07:05
一、如何判断元素是否在iframe中
选中要操作的元素,通过下方的父节点查看是否存在iframe,存在则元素在iframe,需要切换至iframe中进行元素的操作
二、iframe切换方式一
1.方式一通过以下三种方式进行切换:
1.1 driver.switch_to.frame('frame_name')-----iframe的name或者id属性
1.2 driver.switch_to.frame(1)-----iframe的索引
1.3 driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0])----元素定位的方式进行切换
举例:
1.1 iframe的name或者id属性
通过网易163邮箱进行举例,登录页面在iframe中,对iframe中元素进行操作,必须切换到iframe页面,否则操作无效
driver.switch_to.frame('x-URS-iframe1625470819264.4238')
1.2 iframe的索引
腾讯课堂网页点击登录,弹出使用QQ登录页面,该页面则是iframe页面且没有id和name属性,下面使用索引进行切换,
下图中需要切换的iframe是页面第三个iframe,但是索引值是从0开始的,索引在传入索引值是2
driver.switch_to.frame(2)
1.3元素定位的方式进行切换
腾讯课堂网页点击登录,弹出使用QQ登录页面xpath定位要操作的iframe,使用元素定位方式切换
driver.switch_to.frame(driver.find_element_by_xpath('//div[@class="login-qq-iframe-wrap"]//iframe'))
三、iframe切换方式二
使用显性等待来切换至要操作的iframe 需要引入:
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
使用元素定位方式定位到要操作的iframe,此处使用xpath并存储到一个变量里面
loc = (By.XPATH,'//div[@class="login-qq-iframe-wrap"]//iframe')
使用frame_to_be_available_and_switch_to_it方法
WebDriverWait(driver,20).until(EC.frame_to_be_available_and_switch_to_it(loc))
最新文章
- AJAX应用小案例
- 用tcpdump分析tcp三次握手,四次挥手
- AIDL小结
- PS如何查找自己想要的字体
- SDUT 2877:angry_birds_again_and_again
- SpringMVC 模拟登陆
- 解析xml报classnotfound错误
- jquery点击改变class并toggle
- Linux用户及用户组管理
- jna
- C# 控制台倒计时
- Tomcat服务器的下载及安装
- l2-22(重排链表)
- setInterval() 方法应用
- 〖Linux〗noip免费域名申请,及更新域名的API
- 【原】Nginx搭建FTP服务器的细节问题
- 关于RouterOS 国内DDNS服务
- MySQL数据库之安装,基本操作
- IO多路复用(一)-- Select、Poll、Epoll
- Codeforces 639B——Bear and Forgotten Tree 3——————【构造、树】
热门文章
- x小结:certutil -hashfile D:\1.exe MD5
- python类传参示例
- Linux 系统优化-workstation实践
- nginx重定向rewrite
- sizeof()用法汇总-(转自风雷)
- docker存储驱动
- 逗号字符的使用、字符数组与字符串数组、sizeof与strlen
- Python小白的数学建模课-A1.国赛赛题类型分析
- 『动善时』JMeter基础 — 35、JMeter接口关联【JSON提取器】详解
- 【pytest】使用parametrize将参数化变量传递到fixture