zoukankan      html  css  js  c++  java
  • 一篇文章高效定位iframe

    今天跟大家分享的是如何高效的定位iframe。
    我们来看一段最早的代码:

    # coding: utf-8from selenium import webdriverfrom time import sleep
    
    driver = webdriver.Firefox()
    driver.get("http://blog.hexun.com/")
    driver.find_element_by_id("read_btn").click()
    driver.maximize_window()
    sleep(3)driver.find_element_by_id("username").send_keys("账号")
    driver.find_element_by_id("password").send_keys("密码")
    driver.find_element_by_xpath(".//*[@id='login12']/div/div/div/div[3]/input").click()
    sleep(3)
    # 点击发送博客
    driver.find_element_by_xpath(".//*[@id='login12']/div/div/div[3]/a[1]").click()
    sleep(3)
    curr = driver.current_window_handle
    all_curr = driver.window_handles
    for i in all_curr:    if i != curr:
            driver.switch_to.window(i)
            sleep(2)
            driver.find_element_by_id("hxjy_blog_tit").send_keys(u"我的文章")        driver.switch_to.frame(driver.find_element_by_xpath(".//*[@id='editorContainer']/iframe"))
            sleep(2)        driver.find_element_by_xpath("html/body").click()
            driver.find_element_by_xpath("html/body").send_keys(u"童林")
            driver.switch_to.default_content()
            # 页面下拉
            js = "var q=document.documentElement.scrollTop=1000"
            driver.execute_script(js)
            driver.find_element_by_xpath(".//*[@id='hxjy_blog_label']").send_keys(u"测试")
            driver.find_element_by_xpath(".//*[@id='postarticle']").click()        
    

    这是一篇关于selenium的代码,现在就拿这段代码举例子:

    1、如何辨别是不是iframe

    我们用箭头所指工具点击要查看的元素后,在FirePath选项卡下,方框所示的位置会有"iframe.editor"或者"iframe"的提示,这时候我们就可以确定——这是一个iframe。

    2、定位iframe

    这个我觉得有点麻烦,不知道各位大神怎么定位,我说一下我的思路,大家可以参考。由于一点编辑框就进入iframe,导致我不知道怎么定位这个iframe的位置,于是我选择定位这个iframe上面的元素,也就是定位下图方框那里,然后看下面的元素,点开div标签,在里面找iframe,方便的是鼠标移动到标签上时页面会有显示对应的位置:

    上图我们看到了iframe,然后把鼠标放到iframe上,右键选择copy xpath:

    这样我们就定位到了iframe的位置。

    定位到了以后,我们要转移到iframe上,pycharm里提示的方法是switch_to_frame(),但是这个方法已经过时了,如果你用这个方法,pycharm会划线提醒你,最新的方法是switch_to.frame(),传的参数就是iframe的定位也就是代码里黑色那句:

    driver.switch_to.frame(driver.find_element_by_xpath(".//*[@id='editorContainer']/iframe"))
    

    现在我们进入了iframe,接下来正常进行定位、输入内容就可以了(看代码)
    如果对软件测试、接口测试、自动化测试、面试经验交流。感兴趣可以加软件测试交流:1085991341,还会有同行一起技术交流。

    3、怎么跳出iframe

    进入了iframe以后就像进入了一个盒子,盒子里面的东西可以找到,可是盒子外面的东西是找不到的。所以当我们操作完成,继续定位发现下图方框处变成Top Window时,证明这已经不是iframe,我们需要跳出盒子了

    一句话就能跳出来,就像有的人和你说“我已经放下了”就离开你一样,哈哈,你也可以这么潇洒的对不爱你的人说。

    也是一句话,就是最上面代码中的黑色斜体字:

    driver.switch_to.default_content()
    

    这样就跳出iframe了。好多登录框、文章输入框都是iframe写的,现在对你来说应该已经不难了,大家快试试吧。
    以上内容希望对你有帮助,有被帮助到的朋友欢迎点赞,评论。

  • 相关阅读:
    Linux基本网络设置(IP配置等,网卡驱动缓存,网卡中断)
    posix多线程有感线程高级编程(进程的优先级)
    posix多线程有感线程高级编程(均衡负载CPU绑定)
    posix多线程有感线程高级编程(线程调度以及优先级设置)
    linux多线程和锁
    posix多线程有感—sysconf系统变量
    Linux环境下获取网卡连接状态
    posix多线程有感线程高级编程(线程和fork,exec)
    posix多线程有感线程高级编程(线程堆栈)
    Day64:codeblocks安装 for Mac
  • 原文地址:https://www.cnblogs.com/Chaqian/p/12992708.html
Copyright © 2011-2022 走看看