• Selenium基本使用(十三)测试中常见问题


    我们在使用selenium测试过程中,经常会遇到这样的问题:

    1.frame或iframe

    <iframe id='frame1' name='frame1'>
        
    <input type='btuuton' name = 'btn1' value=''/>
       
        <iframe id='frame2' name='frame2'>
            <input type='btuuton' name = 'btn2' value=''/>
    
        </iframe>
    
    </iframe>    

    frame层层切换,  定位button并单击.

        driver.switch_to.frame(frame1)
        driver.switch_to.frame(frame2)
        driver.find_element_by_name('btn2').click()

    切换frame后,如果还想回到外层去操作其它元素,  记得要切回去

        driver.switch_to.default_content()

    切换frame  四种方法:

        driver.switch_to.frame(id) #通过frame id
        driver.switch_to.frame(name) #通过frame name
        driver.switch_to.frame(index) #通过frame 索引  从0开始
        driver.switch_to.frame(webelement) #定位frame元素

    动态frame定位,切换

    处理动态的,也就是说没有id没有name或者有也是动态变化的.   这个我们一般是采用webelement定位再切换

    这里就要用到xpath的内建方法contains(包含--某属性包含字符串)

        iframe = driver.find_element_by_xpath("//iframe[contains(@name,'fra')]")
        driver.switch_to.frame(iframe)

    2.获取页面中table中行数据

    思路:

    1>先定位到table元素

    2>定位table元素下的tr元素

    3>定位tr元素下的td元素

        table = driver.findElement(By.id("table"))
        rows = table.findElements(By.tagName("tr"))
    
        for row in rows: #控制遍历所有行
           cols= row.findElements(By.tagName("td"))
           for col in cols: #控制遍历当前迭代行下所有列
              col.getText()
  • 相关阅读:
    二分查找思路以及可能出现情况对应解决办法
    多线程知识点大纲
    服务器consul启动方法
    大白话带你认识 ZooKeeper !重要概念一网打尽!
    「Netty实战 02」手把手教你实现自己的第一个 Netty 应用!新手也能搞懂!
    从 BIO、NIO 聊到 Netty,最后还要实现个 RPC 框架!
    什么是P问题、NP问题和NPC问题
    期刊汇总
    Typora 使用
    TCA 复习
  • 原文地址:https://www.cnblogs.com/yhleng/p/8074267.html
Copyright © 2020-2023  润新知