zoukankan      html  css  js  c++  java
  • Selenium:多表单(frame/iframe)切换(Switch模块)

    frame标签有frameset、frame、iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位,而frame与iframe需要切换进去才能定位到其中的元素

    比如下面这个网页,有多个frame,以及嵌套iframe,我们在操作里面元素时,需要切换进去。

    登陆后,我们要切换进leftFrame进行操作

    代码:

    # coding = utf-8
    from selenium import webdriver
    # 驱动文件路径
    driverfile_path = r'D:coshipTest_FrameworkdriversIEDriverServer.exe'
    # 启动浏览器
    driver = webdriver.Ie(executable_path=driverfile_path)
    # 打开网页
    driver.get(r'http://172.21.13.83:28080/')
    # 登录
    driver.find_element_by_css_selector("[name='admin.loginName']").send_keys("autotest")
    driver.find_element_by_css_selector("[name='admin.password']").send_keys("111111")
    driver.find_element_by_css_selector("input#imageField").click()
    # 进入leftFrame
    driver.switch_to.frame("leftFrame")
    # 点击链接
    driver.find_element_by_css_selector("a[title='媒资编辑']").click()
    # 退出
    driver.quit()

    switch_to.frame()默认可以直接使用表单(frame/iframe)的id或name属性。如果表单没有id和name属性,可以使用元素定位方法先找到这个表单,再切换进去

    # 先定位到leftFrame
    leftframe = driver.find_element_by_css_selector("frameset#switchFrame>frame")
    # 切换进leftFrame
    driver.switch_to.frame(leftframe)

    假如在leftFrame中操作完成后,我们还需要进入mainFrame操作元素。这就就要先退出leftFrame,回到主页,再进入mainFrame

    # 进入leftFrame
    driver.switch_to.frame("leftFrame")
    # 点击链接
    driver.find_element_by_css_selector("a[title='媒资编辑']").click()
    # 跳出leftFrame,回到主页
    driver.switch_to.default_content()
    # 进入mainFrame
    driver.switch_to.frame("mainFrame")
    # 点击导入
    driver.find_element_by_link_text("导入").click()

    switch_to.default_content()是跳回最外层页面。

    如果进入了多层frame,我们只是想回到上一个frame,可以用

    参考博客:https://www.cnblogs.com/eastonliu/p/9105142.html

  • 相关阅读:
    机器学习---聚类算法
    机器学习解决问题的框架
    17个机器学习的常用算法!
    机器学习---理论篇
    golang 调用cmd执行EXE
    队列(自定义列表实现自定义队列)
    栈Stack(使用自定义链表实现自定义栈)
    链表( 自定义链表)
    队列(动态数组实现自定义队列)
    栈Stack(动态数组实现自定义栈)
  • 原文地址:https://www.cnblogs.com/haifeima/p/10209576.html
Copyright © 2011-2022 走看看