亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2019年01月23日 15:17:46   作者:zh175578809  
這篇文章主要介紹了selenium+python自動化測試之多窗口切換,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

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

在新的窗口中打開頁面

打開百度首頁,點(diǎn)擊右上角的新聞鏈接,默認(rèn)會在當(dāng)前窗口中打開?,F(xiàn)在通過修改點(diǎn)擊元素的屬性,讓新打開的頁面顯示在一個新的窗口中。

找到新聞元素的定義

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

修改上面的代碼,為news元素增加一個屬性:target=”_blank”,增加這個屬性后,再次點(diǎn)擊鏈接,就會開啟一個新的窗口來打開頁面。通過執(zhí)行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)

#通過執(zhí)行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執(zhí)行js語句的內(nèi)容在后面的博客中會有講解,這里先使用一下,這樣設(shè)置后,再次打開新聞頁面時就會在新的窗口中打開。在上面的代碼中再加入兩句

# -*- 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) #打印當(dāng)前頁面的句柄
print(driver.title) #打印頁面標(biāo)題

#通過執(zhí)行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)

程序輸出:

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

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

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

輸出結(jié)果:

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

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

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

輸出結(jié)果:

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

全部代碼:

# -*- 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) #打印當(dāng)前窗口的句柄
print(driver.title) #打印當(dāng)前頁面標(biāo)題

#通過執(zhí)行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 #獲取當(dāng)前打開的所有窗口的句柄
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)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Python向C語言的鏈接庫傳遞數(shù)組、結(jié)構(gòu)體、指針類型的數(shù)據(jù)

    使用Python向C語言的鏈接庫傳遞數(shù)組、結(jié)構(gòu)體、指針類型的數(shù)據(jù)

    今天小編就為大家分享一篇關(guān)于使用Python向C語言的鏈接庫傳遞數(shù)組、結(jié)構(gòu)體、指針類型的數(shù)據(jù),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • python3利用tcp實(shí)現(xiàn)文件夾遠(yuǎn)程傳輸

    python3利用tcp實(shí)現(xiàn)文件夾遠(yuǎn)程傳輸

    這篇文章主要為大家詳細(xì)介紹了python3利用tcp實(shí)現(xiàn)文件夾遠(yuǎn)程傳輸,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Python 加密的實(shí)例詳解

    Python 加密的實(shí)例詳解

    這篇文章主要介紹了 Python 加密的實(shí)例詳解的相關(guān)資料,這里提供了兩種實(shí)現(xiàn)方法,需要的朋友可以參考下
    2017-10-10
  • python中將數(shù)據(jù)生成為Excel文件的5種方法舉例

    python中將數(shù)據(jù)生成為Excel文件的5種方法舉例

    工作中需要把數(shù)據(jù)導(dǎo)入到excel中,記錄一下操作方式,這篇文章主要給大家介紹了關(guān)于python中將數(shù)據(jù)生成為Excel文件的5種方法,文中通過圖文以及代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • python處理document文檔保留原樣式

    python處理document文檔保留原樣式

    這篇文章主要為大家詳細(xì)介紹了python處理document文檔保留原樣式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Python如何自定義鄰接表圖類

    Python如何自定義鄰接表圖類

    這篇文章主要介紹了Python如何自定義鄰接表圖類問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python中requirements.txt簡介(推薦)

    Python中requirements.txt簡介(推薦)

    Python項(xiàng)目中必須包含一個?requirements.txt?文件,用于記錄所有依賴包及其精確的版本號,以便新環(huán)境部署,這篇文章主要介紹了Python中requirements.txt簡介,需要的朋友可以參考下
    2022-11-11
  • Python實(shí)現(xiàn)word2Vec model過程解析

    Python實(shí)現(xiàn)word2Vec model過程解析

    這篇文章主要介紹了Python實(shí)現(xiàn)word2Vec model過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • Django接收照片儲存文件的實(shí)例代碼

    Django接收照片儲存文件的實(shí)例代碼

    這篇文章主要介紹了Django接收照片儲存文件的實(shí)例代碼 ,代碼簡單易懂,非常不錯,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Python全棧之列表數(shù)據(jù)類型詳解

    Python全棧之列表數(shù)據(jù)類型詳解

    這篇文章主要給大家介紹了關(guān)于Python全棧之列表數(shù)據(jù)類型的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10

最新評論