selenium之三大窗口切換

selenium的三大窗口切換分別是:Windows窗口切換、iframe切換,alter切換python

一、Windows窗口切換web

windows窗口用句柄來惟一標識,因而能夠採用獲取句柄的方法來切換窗口。windows

selenium提供了switch_to.window()的方法來切換窗口,裏面傳入句柄的值,便可切換到對應的窗口網站

首先要獲取窗口句柄,使用driver.window_handles獲取全部句柄,存放在一個列表中,而後根據下標進行切換(下標從0開始,最後一個也能夠用-1表示)spa

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.implicitly_wait(10)
# 在百度輸入框輸入「微博」,點擊查詢
driver.find_element_by_xpath("//input[@id='kw']").send_keys('微博')
driver.find_element_by_xpath("//input[@id='su']").click()
# 點擊查詢結果中的第一條內容
loc = (By.XPATH,"//div[@id='1']/h3[@class='t']/a/em")
# 顯性等待
WebDriverWait(driver,10).until(EC.presence_of_element_located(loc))
driver.find_element(*loc).click()
# 獲取當前全部窗口的句柄
windows = driver.window_handles
print(windows)
#切換窗口
driver.switch_to.window(windows[-1])

二、iframe切換對象

不少網站咱們在點擊一個按鈕後會彈出一個新的窗口進行數據填寫,這些窗口不少都是iframe窗口,若是不先切換到對應的iframe,是沒法對其中的元素進行操做的blog

iframe的切換方式:switch_to.frame()-----這個括號中的能夠填iframe的下標,從0開始driver.switch_to.frame(2)索引

                                                          ------括號中的內容能夠填iframe的id或name,driver.switch_to.frame("name")ci

                                                         -------括號中還能夠是元素對象,driver.switch_to.frame(driver.find_element_by_name(''))element

例以下面這個iframe,它沒有對應的id和name值,除了能夠根據索引定義外,還能夠根據它的class對象定位driver.switch_to.frame(driver.find_element_by_class_name('iframeclass'))

 

三、alter切換

 什麼是alter窗口呢?就是系統彈出的提示框

 

 對於這種alter無非就是肯定操做,取消操做,獲取界面文本

al = driver.switch_to.alert

al.text   # 獲取文本

al.dismiss()  # 取消

al.accept()  # 肯定

相關文章
相關標籤/搜索