这里暂做个记录,问题先解决到这里,后期如果能完善该问题再来更新
疑问: robot framework中通过browser.switch_to_handle(handle)进行窗口切换时候,程序是正常切换了,但是浏览器上展示的当前窗口并没有切换
目标:在浏览器窗口A上有个链接,点击后同一浏览器打开窗口B,在A和B窗口之间互相切换,并获取对应窗口的元素
一.尝试方案(参考文章地址 http://www.cnblogs.com/testwang/p/6097621.html)
1.在D:\Python27\Lib\site-packages\Selenium2Library\locators\windowmanager.py文件中增加方法
def select_by_handle(self,browser,handle):
browser.switch_to_window(handle)
print "toHandle: "+ handle
def get_window_handles_bylh(self,browser):
return [window_info[0]forwindow_infoinself._get_window_infos(browser)]
def get_current_window_handle_bylh(self,browser):
return browser.get_current_window_handle()
2.在D:\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_bylh(self):
"""Returns and logs handles of all windows known to the browser."""
return self._log_list(self._window_manager.get_window_handles_bylh(self._current_browser()))
def get_current_window_handle_bylh(self):
"""Returns and logs handle of current window known to the browser."""
return self._log_list(self._window_manager.get_current_window_handle_bylh(self._current_browser()))
实验场景1
1.通过get window handles bylh方法获取当前浏览器中A和B窗口的句柄
2.通过select_window_by_handle从A窗口切换到B窗口,获取B窗口中的元素
实验场景1结果
浏览器中的页面从A窗口跳转到B窗口,元素获取成功获取
实验场景2
1.通过get window handles bylh方法获取当前浏览器中A和B窗口的句柄
2.通过select_window_by_handle从A窗口切换到B窗口
3.再次通过select_window_by_handl从B窗口切换到A窗口,获取A窗口中的元素
实验场景2结果
浏览器中页面上还是展示B窗口,但能正常获取到A窗口中的元素
实验场景3
1.通过get window handles bylh方法获取当前浏览器中A和B窗口的句柄
2.通过select_window_by_handle从A窗口切换到B窗口
3.再次通过select_window_by_handl从B窗口切换到A窗口,获取B窗口中的元素
实验场景3结果
浏览器中页面上先是展示B窗口,等到获取B窗口中的元素失败后,浏览器中的窗口切换到A窗口
三个场景中获取浏览器的get window handles bylh和select_window_by_handle方法都正常