Selenium-Switch與SelectApi接口詳解
阿新 • • 發佈:2018-07-08
visible 依然 switch 基於web con webdriver send php 牡丹江
轉:http://www.imdsx.cn/index.php/2017/07/31/swse/
Switch
我們在UI自動化測試時,總會出現新建一個tab頁面、彈出一個瀏覽器級別的彈框或者是出現一個iframe標簽,這時我們用WebDriver提供的Api接口就無法處理這些情況了。需要用到Selenium單獨提供的模塊switch_to模塊
引用路徑
# 第一種方式可以通過直接導入SwitchTo模塊來進行操作 from selenium.webdriver.remote.switch_to import SwitchTo # 第二種方式是直接通過Webdriver的switch_to來操作 driver.switch_to
其實webdriver在以前的版本中已經為我們封裝好了切換Windows、Alert、Iframe,現在依然可以使用,但是會被打上橫線,代表他已經過時了,建議使用SwitchTo類來進行操作。
SwitchToWindows
handles = driver.window_handles # SwitchToWindows接受瀏覽器TAB的句柄 driver.switch_to.window(handles[1])
SwitchToFrame
# SwitchToFrame支持id、name、frame的element # 接受定位到的iframe的Element,這樣就可以通過任意一種定位方式進行定位了frameElement = driver.find_element_by_name(‘top-frame‘) driver.switch_to.frame(frameElement) # 通過fame的name、id屬性定位 driver.switch_to.frame(‘top-frame‘) # 當存在多層iframe嵌套時,需要一層一層的切換查找,否則將無法找到 driver.switch_to.frame(‘top-frame‘) driver.switch_to.frame(‘baidu-frame‘) # 跳轉到最外層的頁面 driver.switch_to.default_content()# 多層Iframe時,跳轉到上一層的iframe中 driver.switch_to.parent_frame()
SwitchToAlert
# alert 實際上也是Selenium的一個模塊 from selenium.webdriver.common.alert import Alert # 也可以通過Webdriver的switch_to來調用 # 點擊確認按鈕 driver.switch_to.alert.accept() # 如果是確認彈框,相當於點擊需要和X按鈕 driver.switch_to.alert.dismiss() # 如果alert上有文本框時,可以輸入文字。(註: 沒遇到過) driver.switch_to.alert.send_keys() # 返回Alert上面的文本內容 text = driver.switch_to.alert.text
Select
在UI自動化測試過程中,經常會遇到一些下拉框,如果我們基於Webdriver操作的話就需要click兩次,而且很容易出現問題,實際上Selenium給我們提供了專門的Select(下拉框處理模塊)。
引用路徑
from selenium.webdriver.support.select import Select
Select操作
# 通過select選項的索引來定位選擇對應選項(從0開始計數) Select(s).select_by_index(5) # 通過選項的value屬性值來定位 Select(s).select_by_value(‘2‘) # 通過選項的文本內容來定位 Select(s).select_by_visible_text(‘牡丹江‘) # 返回第一個選中的optionElement對象 Select(s).first_selected_option # 返回所有選中的optionElement對象 Select(s).all_selected_options # 取消所有選中的option Select(s).deselect_all() # 通過option的index來取消對應的option Select(s).deselect_by_index(1) # 通過value屬性,來取消對應option Select(s).deselect_by_value(‘‘) # 通過option的文本內容,取消對應的option Select(s).deselect_by_visible_text(‘‘)
Selenium-Switch與SelectApi接口詳解