1. 程式人生 > >RF入門:robotframwork的WEB功能測試—切換window視窗

RF入門:robotframwork的WEB功能測試—切換window視窗

selenium2library提供的切換到新視窗的關鍵字,只有select window,而且也只能根據title、name、url去定位。

所以這裡總結了一下其他的方法。

一、 拓展selenium2library庫。

即修改selenium的原始碼。
  • *\ Python27\Lib\site-packages\Selenium2Library\locators:找到windowmanager.py檔案。

    開啟編輯,增加方法

def select_by_handle(self, browser, toHandle):
browser.switch_to_window(toHandle)
def get_window_handles(self, browser):
return [ window_info[0] for window_info in self._get_window_infos(browser) ] def
get_current_window_handle(self, browser):
return browser.get_current_window_handle()

  • *:\Python27\Lib\site-packages\Selenium2Library\keywords:找到_browsermanagement.py檔案。

    開啟編輯,增加方法

def select_window_by_handle(self, locator=None):
self._window_manager.select_by_handle(self._current_browser(), locator)
def get_window_handles(self):
“”“Returns and logs handles of all windows known to the browser.”""
return self._log_list(self._window_manager.get_window_handles(self._current_browser()))
def get_current_window_handle(self):
“”“Returns and logs handle of current window known to the browser.”""
return self._log_list(self._window_manager.get_current_window_handle(self._current_browser()))

二、編寫自己的關鍵字

 使用robotframework:
  • 建立“Index Item From List”關鍵字

這裡寫圖片描述

  • 建立“get 新視窗”關鍵字

    這裡寫圖片描述

  • 建立“select新視窗/原視窗”關鍵字

這裡寫圖片描述

  • 使用我們寫好的關鍵字吧。

這裡寫圖片描述

例子說明:最後一行,就是呼叫我們的“select新視窗”來切換到新開啟的“href”的視窗。

${win_curr}= Get Current Window Handle #獲得當前視窗
@{win_hds}= Get Window Handles    #獲得當前所有的視窗
Run Keyword  click element ${item}  #這裡就是開啟我們的href新視窗
sleep 3
${win_child}= get新視窗 @{win_hds} #get新視窗會獲取開啟href新視窗後的所有視窗,會比@{win_hds}多這麼一個href。這樣就可以迴圈得到它了。
Select Window By Handle ${win_child}
[Return] ${win_child}

@{b} get window handles //@{b}變數儲存當前所有的視窗。@符號表示這個變數是集合。
Select window by handle ${b[1]}//這個是取變數b裡面的第二個視窗。(下標從0開始)。