2013-04-22 189 views
0

我有多個功能時一起運行拋出此錯誤。如果我通過他們自己運行場景,那麼沒有問題。我認爲問題在於測試運行期間生成的彈出窗口並未正確關閉。我有一個After鉤子,關閉所有打開的窗口,除了打開的第一個窗口之外的代碼。瀏覽器窗口可能已關閉。 (Selenium :: WebDriver :: Error :: UnknownError)

錯誤:會話[2c50a228-3ad7-a544-a6ca-5d173b86bc86]沒有驅動程序。瀏覽器窗口可能已關閉。 (硒:: webdriver的::錯誤::不明錯誤)

我加了一堆的打印報表,在我的代碼,以獲得當前狀態:
後:會話 - >#<>水豚::會議: 0x00000100f811b8>
之前:驅動器 - >硒
之前:Session對象 - #<>水豚::會話:0x00000100f811b8>
之前(啓動)驅動程序對象#<>水豚::硒::驅動器:0x000001028ad790>

此事件之前的情況大的情況失敗了,這是罪魁禍首,但爲什麼?任何人都可以將我指向正確的方向嗎?


#assume ONLY last window opened is to be closed 
page.driver.browser.switch_to.window(page.driver.browser.window_handles.last) 
page.execute_script "window.close();" 

#switch back to first window opened, make it the default window now 
page.driver.browser.switch_to.window(page.driver.browser.window_handles.first) 


的Env後: 水豚(2.0.3)
黃瓜(1.1.9)
硒的webdriver(2.29.0)
紅寶石1.9.3p0

+0

該行給出了錯誤,請分享我 – 2013-04-22 15:59:18

回答

0
require 'selenium-webdriver' 

driver = Selenium::WebDriver.for :firefox 
driver.get "https://www.google.co.in/" 
address = driver.find_element(:link_text, "Gmail").attribute('href') 
driver.execute_script("window.open()") 
p driver.window_handles.length 
p driver.window_handles.first #=> "{f17eac79-daf9-4a6c-a1ff-1b524fef9faf}" 
driver.switch_to.window(driver.window_handles.last) 
driver.get address 
driver.execute_script "window.close()" 
driver.execute_script "window.close()" 
# => Window not found. The browser window may have been closed. (Selenium::WebDriver::Error::NoSuchWindowError) 

在上面的代碼中,我只是試圖重新生成錯誤,它發生了。 Error是非常合乎邏輯的,因爲我試圖關閉一個已經關閉的,不存在的窗口。

現在我想調試這樣:

p driver.browser.window_handles.length # if this is 0,then below line obvious throw error. 
page.driver.browser.switch_to.window(page.driver.browser.window_handles.last) 
page.execute_script "window.close();" 
p driver.browser.window_handles.length # if this is 0,then below line obvious throw error. 
page.driver.browser.switch_to.window(page.driver.browser.window_handles.first) 

現在調試,讓我知道你的結果。

+0

了第二窗口關閉,這是我預料的錯誤,但我似乎,即使我做的窗戶不敢靠近LL得到這個錯誤。我只是重新運行我的功能,似乎頁面對象是如何丟失!之前的一步將訪問頁面,但下一步將會如何失去它! – 2013-04-22 19:37:27

+0

@ChesterTester是的,你需要仔細調試你的代碼,試圖關閉一個窗口,可能會提前關閉窗口。 – 2013-04-22 19:39:21

0

解決方法是首先將窗口最大化。我還沒有找到一種方法來最大化窗口。在測試過程中,我手動點擊最大化瀏覽器按鈕,測試運行完美。

https://github.com/fahenao/_bot

+0

儘管這個鏈接可能回答這個問題,但最好在這裏包含答案的重要部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – Marusyk 2016-02-11 23:03:07

相關問題