• selenium的iframe操作



    一、frame的定位方式
    from selenium import webdriver
    import time
    from selenium.webdriver.support.ui import WebDriverWait
    driver = webdriver.Chrome()
    driver.get('https://mail.126.com/')
    driver.implicitly_wait(10)
    '''frame的几种定位方式,
    第一种,frame有id或者有name则使用,switch_to.frame只能用于iframe存在id或者name
    driver.switch_to.frame('x-URS-iframe')
    driver.find_element_by_name('email').send_keys('12355o6')
    '''


    '''第二种,无id和name
    对iframe像普通元素那样先查找到,然后切换
    iframe = driver.find_element_by_id('x-URS-iframe')
    driver.switch_to.frame(iframe)
    driver.find_element_by_name('email').send_keys('12355o6')
    '''

    '''第三种, 直接数topwin中有多少个iframe,按照数组的方式找到,也就是通过索引值找到
    ,弊端,不知道要找的iframe的索引是多少
    WebDriverWait(driver, 10).until(lambda x: x.find_element_by_id('x-URS-iframe'))
    driver.switch_to.frame(0) #括号中为iframe所在的索引位置
    driver.find_element_by_name('email').send_keys('12355o6')

    备注:进入iframe后如果要操作ifram外面的元素,需要先退出
    driver.switch_to.default_content()  #跳出到topwindown层


    二、多个frame的问题
    '''iframe嵌套问题
    第一种:
    topwindow中有2个iframe(f1、f2)并列
    driver.switch_to.frame('f1') #跳到f1的iframe层
    driver.switch_to.default_content() #跳出f1,进入topwindow层
    driver.switch_to.frame('f2') #进入f2的iframe层

    第二种:
    topwindow中有2个iframe(f1、f2),f2在f1里面
    driver.switch_to.frame('f1') #从topwindow中进入f1
    driver.switch_to.frame('f2') #从f1中进入f2
    driver.switch_to.default_content() #退出f2,直接进入topwindow

    driver.switch_to.frame('f1') #从topwindow中进入f1
    driver.switch_to.frame('f2') #从f1中进入f2
    driver.switch_to.parent_frame() #退回到父目录
    '''
    人不可无方向
  • 相关阅读:
    C++中的friend函数详细解析(一)
    【图像处理算法】 直方图均衡化
    可降水量W:空中水文学名词初集(4)
    excel\docx
    WebService学习总结
    C#深入学习笔记Lock
    事件Event深入总结
    C#泛型委托与Lambda总结
    SQLServer事务与锁的基础概念总结
    委托Delegate深入总结
  • 原文地址:https://www.cnblogs.com/yueyanru/p/9392202.html
Copyright © 2020-2023  润新知