我們剛剛將我們的Selenium 0.9.x升級到2.17。我還沒有得到解決,以改變以使用新的捲筒紙驅動器的代碼,所以我們仍然使用硒客戶端不關閉
BrowserConfigurationOptions options = new BrowserConfigurationOptions();
options.setSingleWindow();
options.setCommandLineFlags("-trustAllSSLCertificates");
seleniumClient = new DefaultSelenium("localhost", "4444", "*iexplore", "http://localhost:8080/myapp/);
seleniumClient.start(options);
當我的測試結束,我打電話
seleniumClient.stop();
那麼會發生什麼情況是,硒客戶端收到兩個命令:
selectWindow()
open(http://localhost:8080)</code></pre>
最後,瀏覽器窗口保持打開狀態,顯示來自我的tomcat服務器的404消息。 stop()命令使HttpCommandProcessor發送'testComplete',我假設這會導致Selenium服務器傳遞上面的兩個命令。
對於它的價值,我將粘貼下面的Selenium日誌輸出。看來,不知怎的,套接字連接搞砸了。我看到
Command request: testComplete.. here the 'testComplete' from the stop()
...
data from polling: json={command:"selectWindow",target:"",value:""}
...
putting command: json={command:"open",target:"http://localhost:8080",value:""}
...
waiting for data for at most 10 more s
所以,也有「selectWindow」和「開放」的命令,但隨後的連接等待10秒,然後發出重試。這是怎麼回事?我只想關閉瀏覽器。
感謝西蒙
26-01-12 12:14 PM INFO {SocketListener0-1} Command request: testComplete[, ] on session d76953d2f181468cab5eba9a382b6e99
26-01-12 12:14 PM FINE {SocketListener0-1} resetting frame group
26-01-12 12:14 PM FINE {SocketListener0-1} ---------retrieving CommandQueue for sel_86748
26-01-12 12:14 PM FINE {SocketListener0-1} sel_86748 commandHolder sel_86748 getCommand()
26-01-12 12:14 PM FINE {SocketListener0-1} putting command: json={command:"selectWindow",target:"",value:""}
26-01-12 12:14 PM FINE {SocketListener0-1} ..command put?: true
26-01-12 12:14 PM FINE {SocketListener0-0} data from polling: json={command:"selectWindow",target:"",value:""}
26-01-12 12:14 PM FINE {SocketListener0-1} sel_86748 commandResultHolder sel_86748 getResult() called
26-01-12 12:14 PM FINE {SocketListener0-0} sel_86748 commandHolder sel_86748 getCommand() -> json={command:"selectWindow",target:"",value:""}
26-01-12 12:14 PM FINE {SocketListener0-1} waiting for data for at most 1800 more s
26-01-12 12:14 PM FINE {SocketListener0-0} res to sel_86748: json={command:"selectWindow",target:"",value:""}
26-01-12 12:14 PM FINE {SocketListener0-0} Handled by org.openqa.selenium.server.SeleniumDriverResourceHandler in HttpContext[/selenium-server,/selenium-server]
26-01-12 12:14 PM FINEST {SocketListener0-0} resetStream()
26-01-12 12:14 PM FINE {SocketListener0-0} RESPONSE:
HTTP/1.1 200 OK
Date: Thu, 26 Jan 2012 11:14:20 GMT
Server: Jetty/5.1.x (Windows 7/6.1 amd64 java/1.6.0_22
Cache-Control: no-cache
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: text/plain
Content-Length: 1048
26-01-12 12:14 PM FINE {SocketListener0-0} REQUEST from [email protected]:4444:
POST /selenium-server/driver/?&localFrameAddress=top&seleniumWindowName=&uniqueId=sel_86748&sessionId=d76953d2f181468cab5eba9a382b6e99&counterToMakeURsUniqueAndSoStopPageCachingInTheBrowser=1327576460834&sequenceNumber=102 HTTP/1.1
Accept: */*
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; .NET4.0C; .NET4.0E)
Host: localhost:4444
Content-Length: 13
Connection: keep-alive
Cache-Control: no-cache
26-01-12 12:14 PM FINEST {SocketListener0-0} Contexts at /selenium-server/driver/: [/selenium-server/driver/*=[HttpContext[/selenium-server/driver,/selenium-server/driver]], /selenium-server/*=[HttpContext[/selenium-server,/selenium-server]], /=[HttpContext[/,/]]]
26-01-12 12:14 PM FINE {SocketListener0-0} Try HttpContext[/selenium-server/driver,/selenium-server/driver],0
26-01-12 12:14 PM FINE {SocketListener0-0} Try HttpContext[/selenium-server,/selenium-server],0
26-01-12 12:14 PM FINE {SocketListener0-0} Handler org.openqa.jetty.http.handler.SecurityHandler in HttpContext[/selenium-server,/selenium-server]
26-01-12 12:14 PM FINE {SocketListener0-0} Handler org.openqa.selenium.server.StaticContentHandler in HttpContext[/selenium-server,/selenium-server]
26-01-12 12:14 PM FINE {SocketListener0-0} PATH=/driver/ RESOURCE=file:/E:/Development/_umbrella/webtest2/MISSING%20RESOURCE
26-01-12 12:14 PM FINE {SocketListener0-0} Looking for file:/E:/Development/_umbrella/webtest2/MISSING%20RESOURCE
26-01-12 12:14 PM FINE {SocketListener0-0} Handler org.openqa.selenium.server.SessionExtensionJsHandler in HttpContext[/selenium-server,/selenium-server]
26-01-12 12:14 PM FINE {SocketListener0-0} Handler org.openqa.selenium.server.htmlrunner.SingleTestSuiteResourceHandler in HttpContext[/selenium-server,/selenium-server]
26-01-12 12:14 PM FINE {SocketListener0-0} Handler org.ope[email protected]669a4cb
26-01-12 12:14 PM FINE {SocketListener0-0} Handler [email protected]
26-01-12 12:14 PM FINE {SocketListener0-0} Handler org.openqa.selenium.server.SeleniumDriverResourceHandler in HttpContext[/selenium-server,/selenium-server]
26-01-12 12:14 PM FINE {SocketListener0-0} req: POST /selenium-server/driver/?&localFrameAddress=top&seleniumWindowName=&uniqueId=sel_86748&sessionId=d76953d2f181468cab5eba9a382b6e99&counterToMakeURsUniqueAndSoStopPageCachingInTheBrowser=1327576460834&sequenceNumber=102 HTTP/1.1
Accept: */*
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; .NET4.0C; .NET4.0E)
Host: localhost:4444
Content-Length: 13
Connection: keep-alive
Cache-Control: no-cache
26-01-12 12:14 PM FINE {SocketListener0-0} ---------retrieving CommandQueue for sel_86748
26-01-12 12:14 PM FINE {SocketListener0-0} Browser d76953d2f181468cab5eba9a382b6e99/:top sel_86748 posted OK
26-01-12 12:14 PM FINE {SocketListener0-0} ---------retrieving CommandQueue for sel_86748
26-01-12 12:14 PM FINE {SocketListener0-0} putting command: OK
26-01-12 12:14 PM FINE {SocketListener0-0} ..command put?: true
26-01-12 12:14 PM FINE {SocketListener0-1} data from polling: OK
26-01-12 12:14 PM FINE {SocketListener0-0} sel_86748 commandHolder sel_86748 getCommand() called
26-01-12 12:14 PM FINE {SocketListener0-1} sel_86748 commandResultHolder sel_86748 getResult() -> OK
26-01-12 12:14 PM FINE {SocketListener0-0} waiting for data for at most 10 more s
26-01-12 12:14 PM FINE {SocketListener0-1} ---------retrieving CommandQueue for sel_86748
26-01-12 12:14 PM FINE {SocketListener0-1} sel_86748 commandHolder sel_86748 getCommand()
26-01-12 12:14 PM FINE {SocketListener0-1} putting command: json={command:"open",target:"http://localhost:8080",value:""}
26-01-12 12:14 PM FINE {SocketListener0-1} ..command put?: true
26-01-12 12:14 PM FINE {SocketListener0-0} data from polling: json={command:"open",target:"http://localhost:8080",value:""}
26-01-12 12:14 PM FINE {SocketListener0-1} sel_86748 commandResultHolder sel_86748 getResult() called
26-01-12 12:14 PM FINE {SocketListener0-0} sel_86748 commandHolder sel_86748 getCommand() -> json={command:"open",target:"http://localhost:8080",value:""}
26-01-12 12:14 PM FINE {SocketListener0-1} waiting for data for at most 1800 more s
26-01-12 12:14 PM FINE {SocketListener0-0} res to sel_86748: json={command:"open",target:"http://localhost:8080",value:""}
26-01-12 12:14 PM FINE {SocketListener0-0} Handled by org.openqa.selenium.server.SeleniumDriverResourceHandler in HttpContext[/selenium-server,/selenium-server]
26-01-12 12:14 PM FINEST {SocketListener0-0} resetStream()
26-01-12 12:14 PM FINE {SocketListener0-0} RESPONSE:
HTTP/1.1 200 OK
Date: Thu, 26 Jan 2012 11:14:20 GMT
Server: Jetty/5.1.x (Windows 7/6.1 amd64 java/1.6.0_22
Cache-Control: no-cache
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: text/plain
Content-Length: 1061
26-01-12 12:14 PM FINE {SocketListener0-0} REQUEST from [email protected]:4444:
POST /selenium-server/driver/?&localFrameAddress=top&seleniumWindowName=&uniqueId=sel_86748&sessionId=d76953d2f181468cab5eba9a382b6e99&counterToMakeURsUniqueAndSoStopPageCachingInTheBrowser=1327576461138&sequenceNumber=103 HTTP/1.1
Accept: */*
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; .NET4.0C; .NET4.0E)
Host: localhost:4444
Content-Length: 13
Connection: keep-alive
Cache-Control: no-cache
26-01-12 12:14 PM FINEST {SocketListener0-0} Contexts at /selenium-server/driver/: [/selenium-server/driver/*=[HttpContext[/selenium-server/driver,/selenium-server/driver]], /selenium-server/*=[HttpContext[/selenium-server,/selenium-server]], /=[HttpContext[/,/]]]
26-01-12 12:14 PM FINE {SocketListener0-0} Try HttpContext[/selenium-server/driver,/selenium-server/driver],0
26-01-12 12:14 PM FINE {SocketListener0-0} Try HttpContext[/selenium-server,/selenium-server],0
26-01-12 12:14 PM FINE {SocketListener0-0} Handler org.openqa.jetty.http.handler.SecurityHandler in HttpContext[/selenium-server,/selenium-server]
26-01-12 12:14 PM FINE {SocketListener0-0} Handler org.openqa.selenium.server.StaticContentHandler in HttpContext[/selenium-server,/selenium-server]
26-01-12 12:14 PM FINE {SocketListener0-0} PATH=/driver/ RESOURCE=file:/E:/Development/_umbrella/webtest2/MISSING%20RESOURCE
26-01-12 12:14 PM FINE {SocketListener0-0} Looking for file:/E:/Development/_umbrella/webtest2/MISSING%20RESOURCE
26-01-12 12:14 PM FINE {SocketListener0-0} Handler org.openqa.selenium.server.SessionExtensionJsHandler in HttpContext[/selenium-server,/selenium-server]
26-01-12 12:14 PM FINE {SocketListener0-0} Handler org.openqa.selenium.server.htmlrunner.SingleTestSuiteResourceHandler in HttpContext[/selenium-server,/selenium-server]
26-01-12 12:14 PM FINE {SocketListener0-0} Handler org.ope[email protected]669a4cb
26-01-12 12:14 PM FINE {SocketListener0-0} Handler [email protected]
26-01-12 12:14 PM FINE {SocketListener0-0} Handler org.openqa.selenium.server.SeleniumDriverResourceHandler in HttpContext[/selenium-server,/selenium-server]
26-01-12 12:14 PM FINE {SocketListener0-0} req: POST /selenium-server/driver/?&localFrameAddress=top&seleniumWindowName=&uniqueId=sel_86748&sessionId=d76953d2f181468cab5eba9a382b6e99&counterToMakeURsUniqueAndSoStopPageCachingInTheBrowser=1327576461138&sequenceNumber=103 HTTP/1.1
Accept: */*
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; .NET4.0C; .NET4.0E)
Host: localhost:4444
Content-Length: 13
Connection: keep-alive
Cache-Control: no-cache
26-01-12 12:14 PM FINE {SocketListener0-0} ---------retrieving CommandQueue for sel_86748
26-01-12 12:14 PM FINE {SocketListener0-0} Browser d76953d2f181468cab5eba9a382b6e99/:top sel_86748 posted OK
26-01-12 12:14 PM FINE {SocketListener0-0} ---------retrieving CommandQueue for sel_86748
26-01-12 12:14 PM FINE {SocketListener0-0} putting command: OK
26-01-12 12:14 PM FINE {SocketListener0-0} ..command put?: true
26-01-12 12:14 PM FINE {SocketListener0-1} data from polling: OK
26-01-12 12:14 PM FINE {SocketListener0-0} sel_86748 commandHolder sel_86748 getCommand() called
26-01-12 12:14 PM FINE {SocketListener0-1} sel_86748 commandResultHolder sel_86748 getResult() -> OK
26-01-12 12:14 PM FINE {SocketListener0-0} waiting for data for at most 10 more s
26-01-12 12:14 PM INFO {SocketListener0-1} Got result: OK on session d76953d2f181468cab5eba9a382b6e99
26-01-12 12:14 PM FINE {SocketListener0-1} Handled by org.openqa.selenium.server.SeleniumDriverResourceHandler in HttpContext[/selenium-server,/selenium-server]
26-01-12 12:14 PM FINEST {SocketListener0-1} resetStream()
26-01-12 12:14 PM FINE {SocketListener0-1} RESPONSE:
HTTP/1.1 200 OK
Date: Thu, 26 Jan 2012 11:14:20 GMT
Server: Jetty/5.1.x (Windows 7/6.1 amd64 java/1.6.0_22
Cache-Control: no-cache
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: text/plain
Content-Length: 2
26-01-12 12:14 PM WARNING {testAutocomplete.html} Single file runner completed for: testAutocomplete.html
26-01-12 12:14 PM WARNING {watchprogress-159485824} Finished watching progress
26-01-12 12:14 PM FINEST {SocketListener0-1} EXCEPTION
26-01-12 12:14 PM FINEST {SocketListener0-1} null
26-01-12 12:14 PM FINE {SocketListener0-0} data from polling: null
26-01-12 12:14 PM FINE {SocketListener0-0} sel_86748 commandHolder sel_86748 getCommand() -> json={command:"retryLast",target:"",value:""}
26-01-12 12:14 PM FINE {SocketListener0-0} res to sel_86748: json={command:"retryLast",target:"",value:""}
26-01-12 12:14 PM FINE {SocketListener0-0} Handled by org.openqa.selenium.server.SeleniumDriverResourceHandler in HttpContext[/selenium-server,/selenium-server]
26-01-12 12:14 PM FINEST {SocketListener0-0} resetStream()
26-01-12 12:14 PM FINE {SocketListener0-0} RESPONSE:
HTTP/1.1 200 OK
Date: Thu, 26 Jan 2012 11:14:21 GMT
Server: Jetty/5.1.x (Windows 7/6.1 amd64 java/1.6.0_22
Cache-Control: no-cache
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: text/plain
Content-Length: 1045
補遺(2012年3月15日):
事實證明,在SeleniumServer的RemoteControlConfiguration是造成這種現象:
cfg.setReuseBrowserSessions(false);
解決它。顯然,服務器會保持瀏覽器打開,等待下一次測試的到來。我很確定,在所有測試執行完畢後,有一種「正確」的方式來關閉客戶端/服務器,但對於我的測試,重複使用瀏覽器會話不是必需的。
我不願意重寫我的代碼使用webdriver的權利,但我也試試這個: seleniumClient =新WebDriverBackedSelenium(新InternetExplorerDriver(),域); ,並得到錯誤「意外的錯誤啓動Internet Explorer。保護模式必須設置爲相同的值(啓用或禁用)的所有區域。」看來我會打開一個新的潘多拉盒子朝着這個方向前進。 – Simon
嘗試添加以下內容: DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer(); ieCapabilities.setCapability(Internet Explorer 7.0)。INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true); WebDriver驅動程序=新InternetExplorerDriver(ieCapabilities); 您還可以按照以下建議更改註冊表設置: http://code.google.com/p/selenium/issues/detail?id=1795 – Scott
添加IE功能後,我現在可以獲得各種JS錯誤運行測試(潘多拉盒子!!)。但是,瀏覽器最終會關閉。 InternetExplorerDriver發送 DELETE/session/89172483-8591-4179-be7d-63cc8587d817 HTTP/1.1 它管理關閉瀏覽器。我會看看我是否可以說服傳統的DefaultSelenium也這樣做。 – Simon