最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

selenium+python自動(dòng)化測(cè)試之多窗口切換

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

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

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

在新的窗口中打開頁(yè)面

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

找到新聞元素的定義

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

修改上面的代碼,為news元素增加一個(gè)屬性:target=”_blank”,增加這個(gè)屬性后,再次點(diǎn)擊鏈接,就會(huì)開啟一個(gè)新的窗口來打開頁(yè)面。通過執(zhí)行js語(yǔ)句為元素增加屬性

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

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

#通過執(zhí)行js語(yǔ)句為元素添加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é)果是首頁(yè)的句柄,第二次結(jié)果是獲取到的當(dāng)前所有打開的窗口句柄。一共打開了兩個(gè)窗口,一個(gè)是主頁(yè),另一個(gè)是點(diǎn)擊新聞打開的頁(yè)面,所以第二次獲取到的是一個(gè)list,包含兩個(gè)窗口的句柄。

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

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

輸出結(jié)果:

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

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

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

輸出結(jié)果:

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

全部代碼:

# -*- 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)前頁(yè)面標(biāo)題

#通過執(zhí)行js語(yǔ)句為元素添加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]) #切換到第二個(gè)窗口的句柄
print(driver.current_window_handle)
print(driver.title)

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

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

相關(guān)文章

  • Tensorflow 自定義loss的情況下初始化部分變量方式

    Tensorflow 自定義loss的情況下初始化部分變量方式

    今天小編就為大家分享一篇Tensorflow 自定義loss的情況下初始化部分變量方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python捕捉和模擬鼠標(biāo)事件的方法

    Python捕捉和模擬鼠標(biāo)事件的方法

    這篇文章主要介紹了Python捕捉和模擬鼠標(biāo)事件的方法,涉及PyHook和PyWin32模塊的使用技巧,需要的朋友可以參考下
    2015-06-06
  • 解決TensorFlow GPU版出現(xiàn)OOM錯(cuò)誤的問題

    解決TensorFlow GPU版出現(xiàn)OOM錯(cuò)誤的問題

    今天小編就為大家分享一篇解決TensorFlow GPU版出現(xiàn)OOM錯(cuò)誤的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • 利用Pycharm連接服務(wù)器的全過程記錄

    利用Pycharm連接服務(wù)器的全過程記錄

    平時(shí)在遠(yuǎn)程連接服務(wù)器,大多數(shù)都是使用 Xshell,其實(shí)對(duì)于經(jīng)常寫python的小伙伴,我們還有一個(gè)使用起來更加方便,就是常用的python集成IED工具Pycharm,這篇文章主要給大家介紹了關(guān)于如何利用Pycharm連接服務(wù)器的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • 使用Python的Scrapy框架十分鐘爬取美女圖

    使用Python的Scrapy框架十分鐘爬取美女圖

    Scrapy是一個(gè)使用Python編寫的,輕量級(jí)的,簡(jiǎn)單輕巧,并且使用起來非常的方便。使用Scrapy可以很方便的完成網(wǎng)上數(shù)據(jù)的采集工作,它為我們完成了大量的工作,而不需要自己費(fèi)大力氣去開發(fā)。本文介紹了使用Python的Scrapy框架十分鐘爬取美女圖,需要的朋友可以參考下
    2016-12-12
  • Django+Uwsgi+Nginx如何實(shí)現(xiàn)生產(chǎn)環(huán)境部署

    Django+Uwsgi+Nginx如何實(shí)現(xiàn)生產(chǎn)環(huán)境部署

    這篇文章主要介紹了Django+Uwsgi+Nginx如何實(shí)現(xiàn)生產(chǎn)環(huán)境部署,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • python中property屬性的介紹及其應(yīng)用詳解

    python中property屬性的介紹及其應(yīng)用詳解

    這篇文章主要介紹了python中property屬性的介紹及其應(yīng)用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 關(guān)于Python中Inf與Nan的判斷問題詳解

    關(guān)于Python中Inf與Nan的判斷問題詳解

    這篇文章主要介紹了關(guān)于Python中Inf與Nan的判斷問題,文中介紹的很詳細(xì),對(duì)大家具有一定的參考價(jià)值,有需要的朋友們下面來一起看看吧。
    2017-02-02
  • Python單元測(cè)試實(shí)例詳解

    Python單元測(cè)試實(shí)例詳解

    這篇文章主要介紹了Python單元測(cè)試,結(jié)合實(shí)例形式詳細(xì)分析了Python單元測(cè)試模塊的功能、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2018-05-05
  • Python中的常見數(shù)據(jù)集打亂方法

    Python中的常見數(shù)據(jù)集打亂方法

    這篇文章主要介紹了Python中的常見數(shù)據(jù)集打亂方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02

最新評(píng)論

抚松县| 铁力市| 当阳市| 亚东县| 共和县| 孟村| 大洼县| 长白| 安义县| 达州市| 鄂托克旗| 陆河县| 紫金县| 吴桥县| 登封市| 灵石县| 锡林郭勒盟| 祁门县| 泰安市| 罗平县| 梓潼县| 浦县| 平远县| 璧山县| 陆川县| 钦州市| 吴堡县| 平凉市| 海南省| 普定县| 乳山市| 涟水县| 克东县| 石嘴山市| 巴马| 腾冲县| 漳平市| 抚宁县| 乐陵市| 布尔津县| 夏津县|