美文网首页
python自动化测试(三)

python自动化测试(三)

作者: 逛逛_堆栈 | 来源:发表于2021-06-11 13:58 被阅读0次

    python自动化测试(三)

    多层框架或窗口的定位

    1、switch_to_frame

    有时候我们定位一个元素,定位器没有问题,但一直定位不了,这时候就要检查这个元素是否在一个frame中,seelnium webdriver 提供了一个switch_to_frame方法,可以很轻松的来解决这个问题。

    # inner.html
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
        </head>
        <body>
            <div id="inner_div">
                <input type="text" name="name" id="name" value="" />
                <button type="button" id="btn">按钮</button>
            </div>
    <script type="text/javascript">
                document.getElementById("btn").onclick = function(){
                    var name = document.getElementById("name").value;
                    window.alert(name);
                }
            </script>
        </body>
    </html>
    
    
    # outter.html
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>定位iframe</title>
        </head>
        <body>
            <div class="header" style="width: 100%;height: 100px;border: 1px solid red;"></div>
            <div class="center" style="overflow: auto;">
                <div class="left" style="height: 500px;width: 19%; border: 1px solid blue;float: left;"></div>
                <iframe src="inner.html" width="60%" height="500px" style="float:left;margin-left: 10px;"></iframe>
                <div class="right" style="height: 500px;width: 19%; border: 1px solid green;float: right;"></div>
            </div>
            <div class="footer" style="width: 100%;height: 100px;border: 1px solid red;"></div>
        </body>
    </html>
    
    

    定位如下、

    # 只有导入 webdriver 包我们才能使用 webdriver API 进行自动化脚本的开发
    # 将控制的 webdriver 的 Firefox 赋值给 browser;
    driver = webdriver.Firefox()
    # 打开本地页面
    driver.get("http://127.0.0.1:8848/kk/outter.html")
    # 只能等待 在一个时间范围内智能的等待
    driver.implicitly_wait(5)
    driver.switch_to_frame("inner")
    driver.find_element_by_id("name").send_keys("python自动化测试")
    driver.find_element_by_id("btn").click()
    time.sleep(3)
    driver.quit()
    

    2、switch_to_window

    有个需求、

    1. 打开百度首页,点击登录按钮,点击立即注册按钮,打开新的窗口
    
    2. 跳转到注册窗口,在注册窗口进行操作
    
    3. 跳回到百度首页,点击登录弹出框的关闭按钮,在百度首页进行操作
    

    第一步 打开百度、点击登陆、点击注册、

    # coding=utf-8
    
    from selenium import webdriver
    import time
    
    # 只有导入 webdriver 包我们才能使用 webdriver API 进行自动化脚本的开发
    # 将控制的 webdriver 的 Firefox 赋值给 browser;
    driver = webdriver.Firefox()
    driver.maximize_window()
    # 打开百度 点击登陆 点击注册
    driver.get("http://www.baidu.com")
    # 获得当前窗口
    current_window = driver.current_window_handle
    # 点击登陆 link定位
    time.sleep(2)
    driver.find_element_by_xpath('//*[@id="s-top-loginbtn"]').click()
    # 点击注册
    time.sleep(2)
    driver.find_element_by_link_text('立即注册').click()
    

    然后在不同的页面 进行不同的操作

    # coding=utf-8
    
    from selenium import webdriver
    import time
    
    # 只有导入 webdriver 包我们才能使用 webdriver API 进行自动化脚本的开发
    # 将控制的 webdriver 的 Firefox 赋值给 browser;
    driver = webdriver.Firefox()
    driver.maximize_window()
    # 打开百度 点击登陆 点击注册
    driver.get("http://www.baidu.com")
    # 获得当前窗口
    current_window = driver.current_window_handle
    # 点击登陆 link定位
    time.sleep(2)
    driver.find_element_by_xpath('//*[@id="s-top-loginbtn"]').click()
    # 点击注册
    time.sleep(2)
    driver.find_element_by_link_text('立即注册').click()
    # 获得所有窗口
    all_windows = driver.window_handles
    # 循环判断 不同的窗口执行不同的操作
    for window in all_windows:
        if window != current_window: #不是百度主页 注册页面
            driver.switch_to.window(window)  # 跳转到注册窗口
            driver.find_element_by_id('TANGRAM__PSP_4__userName').send_keys('TOM')
            driver.find_element_by_id('TANGRAM__PSP_4__phone').send_keys('15188888888')
            driver.find_element_by_id('TANGRAM__PSP_4__password').send_keys('123456')
            time.sleep(3)
        if window == current_window:
            driver.switch_to.window(window)  # 跳转到百度首页窗口
            driver.find_element_by_id('kw').send_keys('python自动化')
            driver.find_element_by_id('su').click()
            time.sleep(3)
    driver.quit()
    

    相关文章

      网友评论

          本文标题:python自动化测试(三)

          本文链接:https://www.haomeiwen.com/subject/psassltx.html