Selenium 多窗口元素定位處理


以下文章來自於  上海-悠悠的博客 《Selenium2+python自動化13-多窗口、句柄(handle)》

有些頁面的鏈接打開后,會重新打開一個窗口,對於這種情況,想在新頁面上操作,就得先切換窗口了。獲取窗口的唯一標識用句柄表示,所以只需要切換句柄,我們就能在多個頁面上靈活自如的操作了。

一、認識多窗口

1.打開趕集網:http://bj.ganji.com/,點擊招聘求職按鈕會發現右邊多了一個窗口標簽

2.我們用代碼去執行點擊的時候,發現界面上出現兩個窗口,如下圖這種情況就是多窗口了。

3.到這里估計有小伙伴納悶了,手工點擊是2個標簽,怎么腳本點擊就變成2個窗口了,這個在2.1里面講過,腳本執行是不加載配置的,

手工點擊是瀏覽器默認設置了新窗口打開方式為標簽,這里用鼠標按住點二個標簽,拖拽出來,也就變成2個標簽了,是一回事。

 

二、獲取當前窗口句柄

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

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

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

 

三、獲取所有句柄

    1.定位趕集網招聘求職按鈕,並點擊

    2.點擊后,獲取當前所以的句柄:window_handles

 

四、切換句柄

網上大部分教程都是些的第一種方法,估計是互相抄吧,小編這里新增一個更簡單的方法,直接從獲取所有的句柄list里面取值。

方法一:

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

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

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

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

方法二:

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

 

五、關閉新窗口,切回主頁

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

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

    3.切回句柄到首頁

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

 

六、參考代碼

# coding:utf-8

from selenium import webdriver

driver = webdriver.Firefox()

driver.get("http://bj.ganji.com/")

h = driver.current_window_handle

print h  # 打印首頁句柄

driver.find_element_by_link_text("招聘求職").click()

all_h = driver.window_handles

print all_h     # 打印所有的句柄

# 方法一:判斷句柄,不等於首頁就切換

# for i in all_h:                       # 這里不建議用for循環了,很多小伙伴懵的

#     if i != h:

#         driver.switch_to.window(i)

#         print driver.title

# 方法二:獲取list里面第二個直接切換

driver.switch_to.window(all_h[1])

print driver.title

# 關閉新窗口

driver.close()

# 切換到首頁句柄

driver.switch_to.window(h)

# 打印當前的title

print driver.title

selenium(python+java)


免責聲明!

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



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