zoukankan      html  css  js  c++  java
  • selenium常用操作之iframe操作

    iframe:一个网页里面嵌套了另一个框架/页面,即在一个HTML页面中还内嵌了另外一个HTML页面,只不过这个内嵌的HTML是放在</frame></iframe>标签对中。

    在python3.8中对应的selenium提供了两种方法来获取iframe中的内容:

    方式一:driver.switvh_to.frame(frame_reference)

    语法:

    driver.switch_to.frame(iframe的name属性或webelement对象或下标)

    示例:

    driver.switch_to.frame(“login_frame_qq”)#切换到name为login_frame_qq的iframe中
    driver.switvh_to.frame(0)#切换到第一个iframe中
    driver.switch_to.frame((By.xpath,"//div[@class="ptlogin_wrap"]))

     方式二:frame_to_be_available_and_switch_to_it(frame_reference)

    在前面的selenium常用操作之等待操作中我们有介绍过,expected_conditons模块中提供的方法。

    此方法会判断iframe是否可用,并且会自动切换到iframe中。

    frame_reference的值与方式一保持一致。

    示例:


    from selenium import webdriver
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By

    WebDriverWait(driver,20).until(EC.frame_to_be_available_and_switch_to_it(iframe_name))

      

    当页面中iframe中还有iframe时,假如此时我们想进入二级iframe,则需要先进入一级iframe,再进入二级iframe。

    #iframeId为一级iframe的id
    driver.switch_to_frame("iframeId")
    #iframeId下有两个并列的iframe,但是他们没有id和name,此时我们可以通过tag_name获取
    driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[1])

    这样我们就进入了一级iframeId下的iframe了!

    selenium跳出iframe

    ①从二级iframe跳到一级iframe,即跳到父级:

    driver.switchTo().parentFrame();
    #或者
    driver.switch_to.parent_frame()

    ②从iframe跳到主窗口

    driver.switch_to_default_content()
    #或者
    driver.switch_to.default_content()
  • 相关阅读:
    my15_ mysql binlog格式从mixed修改为row格式
    my14_mysql指定时间恢复之模拟从库
    my13_mysql xtrabackup备份的时间点
    必知必会的图论算法
    leetcde37. Sudoku Solver
    leetcode36. Valid Sudoku
    leetcode52. N-Queens II
    leetcode51. N-Queens
    First Missing Positive
    Maximum Gap
  • 原文地址:https://www.cnblogs.com/123blog/p/12481898.html
Copyright © 2011-2022 走看看