1. 程式人生 > 其它 >frame表單切換、多視窗切換

frame表單切換、多視窗切換

1. frame表單

frame:HTML頁面中的一種框架,主要作用是在當前頁面中指定區域顯示另一頁面元素;
       (HTML語言中,frame/iframe標籤為表單框架)

1.2 frame表單切換

說明:在WebDriver類庫中封裝了HTML頁面中使用frame表單框架技術定位的方法

方法:
    1). driver.switch_to.frame("myframe1")        -->    切換表單方法
            (myframe1:為frame表單的name或id)
    2). driver.switch_to.default_content()        --> 恢復預設頁面方法
            (在frame表單中操作其他頁面,必須先回到預設頁面,才能進一步操作)

操作原理

操作原理:
    1) html中的iframe標籤提供了內聯結構,使用內聯結構可以在一個瀏覽器視窗顯示多個頁面。
    2) iframe標籤是外層頁面的標籤,若想操作iframe框架內嵌的頁面,需要先定位到iframe標籤上。
    3) 通過switch_to.frame()切換到內層頁面,再進行內層頁面的操作。
    4) 內層頁面的操作辦法和普通頁面的操作辦法相同:元素定位、元素操作。

1.3 frame表單切換

說明:在WebDriver類庫中封裝了HTML頁面中使用frame表單框架技術定位的方法
操作步驟:
    1) 定位到iframe標籤。
    2) 完成切換。
        a)若iframe具有id屬性,直接使用id屬性值切換進內層頁面
            driver.switch_to.frame(value)/driver.switch_to_frame(value)
        b) 定位到iframe元素,再切換進入
            el = driver.find_element_by_xxx(value)
            driver.switch_to.frame(el)    /driver.switch_to_frame(el)
注意:
    switch_to.frame()只能切換到當前頁面內嵌的子級頁面,若是多級頁面的巢狀,需要依次在各頁面中通過switch_to.frame()方法切換進入。

方法:
    1). driver.switch_to.frame("myframe1")        -->    切換表單方法
            (myframe1:為frame表單的name或id)
    2). driver.switch_to.default_content()        --> 恢復預設頁面方法
            (在frame表單中操作其他頁面,必須先回到預設頁面,才能進一步操作)

1.4 frame表單切換--向外層切換

若目前操作焦點在內層頁面,需要切換回外層頁面:
1. 跳回最外層的頁面
    driver.switch_to.default_content() -- 切換到最外層(對於多層頁面,可通過該方法直接切換到最外層)
2. 跳回上層的頁面
    driver.switch_to.parent_frame()   -- 進行向上的單層切換

1.5 案例-2解決方案

1. 完成當前頁面註冊資訊;
2. 呼叫表單切換方法(switch_to.frame("myframe1"))切換到註冊使用者A表單中
3. 呼叫恢復預設頁面方法(switch_to.default_content())
4. 呼叫表單切換方法(switch_to.frame("myframe2"))切換到註冊使用者B表單中

1.6 表單切換-總結

1. HTML中常用的表單框架
2. 切換表單方法
3. 為什麼要恢復預設頁面?
4. 恢復預設頁面方法

2. 多視窗

說明:在HTML頁面中,經常有a標籤也就是超連結,這些連結在被執行時,有的會在新的視窗開啟連結;

2.1 為什麼要切換視窗?

案例-2 註冊例項.html

需求:
    1). 點選註冊A頁面連結,在開啟的頁面,填寫A頁面註冊資訊;

問題

1). 無法定位註冊A頁面

2.2 多視窗切換

說明:在WebDriver中封裝了獲取當前視窗控制代碼方法和獲取所有視窗控制代碼的方法以及切換指定控制代碼視窗的方法;
      (控制代碼:英文handle,視窗的唯一識別碼)

方法:
    1). driver.current_window_handle         --> 獲取當前視窗控制代碼
    2). driver.window_handles                 --> 獲取所有視窗控制代碼
    3). driver.switch_to.window(handle)        --> 切換指定控制代碼視窗
堅持,堅持,堅持…… 在你選擇不放棄的那一刻, 成功其實已經在向你走近 我們無法得知什麼時候會來臨 但我們可以選擇用自強的雙手敲開幸福的門。