這里暫做個記錄,問題先解決到這里,后期如果能完善該問題再來更新
疑問: 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方法都正常