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()
  • 相关阅读:
    密钥和地址
    SSL协议
    比特币原理
    自定义tabbar pop控制器 tabbar 重叠问题
    tableView的懒懒的跳转方式,加载数据源方式
    textView在tableViewcell中复用问题,复用时超链接也出现复用,超链接出现在不该出现的文字上
    textview显示文字不全问题
    tableView不执行didselsct代理方法
    NSUserDefaults 存储可变数组问题
    某些时候,collectionVIew的Item无法点击的bug,
  • 原文地址:https://www.cnblogs.com/123blog/p/12481898.html
Copyright © 2011-2022 走看看