91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

selenium+python自動化測試之多窗口切換

發布時間:2020-10-06 15:44:31 來源:腳本之家 閱讀:221 作者:zh175578809 欄目:開發技術

在很多頁面上都有可點擊的鏈接,點擊這些鏈接會打開一個新的窗口,這時如果要在新打開的窗口中操作頁面,就需要先切換到新窗口中,如果不進行切換操作,還是操作的上一個頁面窗口

瀏覽器窗口的切換通過句柄(handle)來操作,每個窗口都有一個句柄,代表當前窗口,需要操作哪個頁面的窗口,切換到窗口對應的句柄。通過driver.switch_to.window(handle)來切換句柄

在新的窗口中打開頁面

打開百度首頁,點擊右上角的新聞鏈接,默認會在當前窗口中打開。現在通過修改點擊元素的屬性,讓新打開的頁面顯示在一個新的窗口中。

找到新聞元素的定義

<a class="mnav"  rel="external nofollow" name="tj_trnews">新聞</a>

修改上面的代碼,為news元素增加一個屬性:target=”_blank”,增加這個屬性后,再次點擊鏈接,就會開啟一個新的窗口來打開頁面。通過執行js語句為元素增加屬性

# -*- coding: utf-8 -*-

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
time.sleep(3)

#通過執行js語句為元素添加target="_blank"屬性
js = 'document.getElementsByName("tj_trnews")[0].target="_blank"'
driver.execute_script(js)

news = driver.find_element_by_name('tj_trnews')
news.click()

webdriver執行js語句的內容在后面的博客中會有講解,這里先使用一下,這樣設置后,再次打開新聞頁面時就會在新的窗口中打開。在上面的代碼中再加入兩句

# -*- coding: utf-8 -*-

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
time.sleep(3)
print(driver.current_window_handle) #打印當前頁面的句柄
print(driver.title) #打印頁面標題

#通過執行js語句為元素添加target="_blank"屬性
js = 'document.getElementsByName("tj_trnews")[0].target="_blank"'
driver.execute_script(js)

news = driver.find_element_by_name('tj_trnews')
news.click()
time.sleep(3)

handles = driver.window_handles #獲取所有打開窗口的句柄
print(handles)

程序輸出:

selenium+python自動化測試之多窗口切換

第一次打印的結果是首頁的句柄,第二次結果是獲取到的當前所有打開的窗口句柄。一共打開了兩個窗口,一個是主頁,另一個是點擊新聞打開的頁面,所以第二次獲取到的是一個list,包含兩個窗口的句柄。

獲取到窗口的句柄后,就可以通過切換句柄來操作頁面,打開新聞頁面后,當前的句柄還是主頁的句柄,如果要操作第二個頁面,需要將句柄切換到第二個窗口

driver.switch_to.window(handles[1])
print(driver.current_window_handle)
print(driver.title)

輸出結果:

selenium+python自動化測試之多窗口切換

可以看到,切換后再次打印的句柄是list的第二個元素,也就是將句柄切換到了第二個打開的新窗口中,這樣就可以操作第二個頁面中的元素了。在切換句柄后打印了一下頁面標題,根據標題得知句柄已經切換到新聞頁面窗口了

在操作完新聞頁面后,使用close()關閉當前頁面,close和quit的區別在selenium+python自動化測試(二)–使用webdriver操作瀏覽器中已經說明過,關閉當前頁面后會回到首頁,需要將句柄再切換回主頁

driver.switch_to.window(handles[0])
print(driver.title)

輸出結果:

selenium+python自動化測試之多窗口切換

句柄又切換為了首頁的句柄,現在又可以操作主頁的元素了

全部代碼:

# -*- coding: utf-8 -*-

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
time.sleep(3)
print(driver.current_window_handle) #打印當前窗口的句柄
print(driver.title) #打印當前頁面標題

#通過執行js語句為元素添加target="_blank"屬性
js = 'document.getElementsByName("tj_trnews")[0].target="_blank"'
driver.execute_script(js)

news = driver.find_element_by_name('tj_trnews')
news.click()
time.sleep(3)

handles = driver.window_handles #獲取當前打開的所有窗口的句柄
print(handles)

driver.switch_to.window(handles[1]) #切換到第二個窗口的句柄
print(driver.current_window_handle)
print(driver.title)

driver.switch_to.window(handles[0]) #切換回主頁句柄
print(driver.title)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

龙游县| 耿马| 仁化县| 河北区| 河津市| 永安市| 濮阳市| 珲春市| 肇庆市| 咸丰县| 宁海县| 淳化县| 青阳县| 舟曲县| 顺昌县| 本溪| 彭泽县| 日土县| 武乡县| 华坪县| 张家口市| 合江县| 屏东县| 闻喜县| 长泰县| 虹口区| 松阳县| 如皋市| 娱乐| 汾西县| 温宿县| 革吉县| 正宁县| 六盘水市| 贵州省| 绥江县| 靖安县| 时尚| 沾化县| 东海县| 连平县|