自動化測試基礎篇--Selenium多窗口、句柄問題


有時我們在打開瀏覽器瀏覽網頁時,當點擊網頁上某些鏈接時,它不是直接在當前頁面上跳轉,而是重新打開一個新標簽頁面,對於這種情況,想在新頁面上操作,就得先切換窗口了。獲取窗口的唯一標識用句柄表示,所以只需要切換句柄,我們就能在多個頁面上靈活自如的操作了。

一、認識多窗口

1、這里以趕集網為例,打開趕集網http://cd.ganji.com/,點擊工作,就會發現會重新打開一個窗口;

二、獲取當前窗口句柄

1.元素有屬性,瀏覽器的窗口其實也有屬性的,只是你看不到,瀏覽器窗口的屬性用句柄(handle)來識別。

2.人為操作的話,可以通過眼睛看,識別不同的窗口點擊切換。但是腳本沒長眼睛,它不知道你要操作哪個窗口,這時候只能句柄來判斷了。

3.獲取當前頁面的句柄:browser.current_window_handle

4.執行結果

三、獲取所有窗口句柄

1、獲取所有窗口句柄:brows.window_handles

2、執行結果

四、切換句柄

方法一:

1.循環判斷是否與首頁句柄相等;

2.如果不等,說明是新頁面的句柄;

3.獲取的新頁面句柄后,可以切換到新打開的頁面上;

4.打印新頁面的title,看是否切換成功。

執行結果

方法二:

直接獲取all_h這個list數據里面第二個hand的值:all_h[i]

執行結果

五、關閉新窗口,返回到原來的窗口

1.打開新頁面后,其實只想驗證新頁面跳轉對不對,這里可以做個簡單的驗證,獲取當前頁面的title驗證;

2.驗證完后切關閉新窗口;

3.切回句柄到首頁;

4.打印當前頁面的句柄,看是否切換到首頁了。

執行結果

六、參考代碼

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File    : handles.py
# @Software: PyCharm
import time
from selenium import webdriver
url = 'http://cd.ganji.com/'
browser = webdriver.Firefox()
browser.get(url)
time.sleep(5)
# 獲取當前頁面的窗口句柄
handle = browser.current_window_handle
print(handle)
# 獲取所有窗口句柄
browser.find_element_by_link_text('成都招聘').click()
handles = browser.window_handles
print(handles)
# 方法一:判斷句柄是否與首頁相等
for i in handles:
    if i != handle:
        browser.switch_to.window(i)
        print(browser.title)
        browser.close()
        browser.switch_to.window(handle)
        print(browser.title)
# 方法二:直接獲取list列表里面的值,取值handles[i]
# browser.switch_to.window(handles[0])
# print(browser.title)
# 退出
browser.quit()

  

  寫在最后的話:這些都是小編自己一個字一個字敲上去的,原創算不上,可能很多類似的資料,小編寫這個的目的是為了激勵自己在學習道路上養成良好的習慣,所以轉載請注明出處,謝謝!

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM