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开始)。