2013-04-22 190 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

相关问题