Клиент Selenium не закрывается - PullRequest
1 голос
/ 26 января 2012

Мы только что обновили наш 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();

В таком случае клиент Selenium получает две команды:

selectWindow()
open(http://localhost:8080)

Наконец, окно браузера остается открытым, отображая сообщение 404 с моего сервера Tomcat. Команда 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» и «open», но затем соединение ждет 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 SocketListener0@0.0.0.0: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.openqa.selenium.server.htmlrunner.SeleniumHTMLRunnerResultsHandler@669a4cb
26-01-12 12:14 PM   FINE    {SocketListener0-0} Handler org.openqa.selenium.server.CachedContentTestHandler@6b541147
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 SocketListener0@0.0.0.0: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.openqa.selenium.server.htmlrunner.SeleniumHTMLRunnerResultsHandler@669a4cb
26-01-12 12:14 PM   FINE    {SocketListener0-0} Handler org.openqa.selenium.server.CachedContentTestHandler@6b541147
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

Приложение (15.3.2012):

Оказывается, что RemoteControlConfiguration на SeleniumServer вызывал такое поведение:

cfg.setReuseBrowserSessions(false);

решил это. Очевидно, сервер будет держать браузер открытым, ожидая следующего теста. Я почти уверен, что есть «правильный» способ закрыть клиент / сервер после выполнения всех тестов, но для моих тестов повторное использование сеансов браузера не требуется.

Ответы [ 2 ]

0 голосов
/ 03 августа 2012

Причиной была установка

RemoteControlConfiguration#setReuseBrowserSessions()

в true при запуске SeleniumServer. При установке этого свойства в false все работало нормально, все экземпляры браузера закрывались правильно.

Simon

0 голосов
/ 26 января 2012

Разве вы не можете вместо этого использовать IEWebDriver и вызвать метод Quit ()?

 WebDriver driver = new InternetExplorerDriver();
// your code
driver.Quit();
...