前言
有些頁面的鏈接打開后,會重新打開一個窗口,想要在新頁面上操作,就需要先切換窗口了。獲取窗口的唯一標識用句柄表示,所以只需要切換句柄,我們就能在多個頁面上靈活自如的操作了。
1、元素有屬性,瀏覽器的窗口其實也有屬性的,只是你看不到,瀏覽器窗口的屬性用句柄(handle)來識別
獲取當前窗口的句柄
driver.current_window_handle
獲取所有窗口的句柄
driver.window_handles
2、切換句柄
方法一:
1.循環判斷是否與首頁句柄相等
2.如果不等,說明是新頁面的句柄
3.獲取的新頁面句柄后,可以切換到新打開的頁面上
4.打印新頁面的title,看是否切換成功
for i in all_h: if i != h: driver.switch_to.window(i) print driver.title
方法二:
1.直接獲取all_h這個list數據里面第二個hand的值:all_h[1]
driver.switch_to.window(all_h[1])
3、關閉新窗口,切回主頁
driver.close() driver.switch_to.window(h)
另js也可以處理多窗口
(1)、比如登錄百度后,點擊百度的網頁鏈接會打開一個新的窗口 (只有登錄的才會打開新的窗口,不登錄是不會的)
(2)、查看元素屬性:target="_blank"
(3)、去掉target="_blank"屬性
1.因為此鏈接元素target="_blank",所以打開鏈接的時候會重新打開一個標簽頁,那么解決這個問題,去掉該屬性就可以了。
2.為了驗證這個問題,可以切換到html編輯界面,手動去掉“_blank”屬性
3.刪除“_blank”屬性后,重新打開鏈接,這時候會發現打開的新鏈接會在原標簽頁打開
(4)、js去掉target屬性
js = 'document.getElementById("id").target="";' driver.execute_script(js)
注意:並不是所有的鏈接都適用於本方法,本篇只適用於有這個target="_blank"屬性鏈接情況