国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2020-02-16 00:52:04
字體:
來源:轉載
供稿:網友

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

瀏覽器窗口的切換通過句柄(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 webdriverfrom selenium.webdriver.common.keys import Keysimport timedriver = 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 webdriverfrom selenium.webdriver.common.keys import Keysimport timedriver = 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)

程序輸出:

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

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

driver.switch_to.window(handles[1])print(driver.current_window_handle)print(driver.title)            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 镇巴县| 神池县| 杂多县| 英超| 诏安县| 萨迦县| 繁峙县| 德钦县| 丹阳市| 景宁| 辉县市| 灌阳县| 吴堡县| 乌鲁木齐县| 上蔡县| 龙州县| 嘉禾县| 南丹县| 无为县| 赣榆县| 达拉特旗| 兴城市| 望谟县| 朝阳市| 汝州市| 二连浩特市| 凤城市| 洪江市| 沙河市| 铜陵市| 诏安县| 奉新县| 淅川县| 东兰县| 阿坝县| 永善县| 阜新市| 定远县| 资中县| 绿春县| 葵青区|