一、如何判断元素是否在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))

最新文章

  1. AJAX应用小案例
  2. 用tcpdump分析tcp三次握手,四次挥手
  3. AIDL小结
  4. PS如何查找自己想要的字体
  5. SDUT 2877:angry_birds_again_and_again
  6. SpringMVC 模拟登陆
  7. 解析xml报classnotfound错误
  8. jquery点击改变class并toggle
  9. Linux用户及用户组管理
  10. jna
  11. C# 控制台倒计时
  12. Tomcat服务器的下载及安装
  13. l2-22(重排链表)
  14. setInterval() 方法应用
  15. 〖Linux〗noip免费域名申请,及更新域名的API
  16. 【原】Nginx搭建FTP服务器的细节问题
  17. 关于RouterOS 国内DDNS服务
  18. MySQL数据库之安装,基本操作
  19. IO多路复用(一)-- Select、Poll、Epoll
  20. Codeforces 639B——Bear and Forgotten Tree 3——————【构造、树】

热门文章

  1. x小结:certutil -hashfile D:\1.exe MD5
  2. python类传参示例
  3. Linux 系统优化-workstation实践
  4. nginx重定向rewrite
  5. sizeof()用法汇总-(转自风雷)
  6. docker存储驱动
  7. 逗号字符的使用、字符数组与字符串数组、sizeof与strlen
  8. Python小白的数学建模课-A1.国赛赛题类型分析
  9. 『动善时』JMeter基础 — 35、JMeter接口关联【JSON提取器】详解
  10. 【pytest】使用parametrize将参数化变量传递到fixture