2014-10-06 1 views
2

У меня такие же тесты, один и тот же селен-сервер-автономный (2.43.1) и хромированный реверс (2.10). У меня есть только функциональные тесты (без модульных тестов). Мой Chrome находится в версии 37. Мой OSX находится в версии 10.9.5. Версия Java - 1.7.0_51 (обновление для Java 7 67).Локальные функциональные тесты начинаются через более 1 минуты

Когда я запускаю тесты новый Chrome экземпляр открыт с язычком пустым:

  • С стажер 1.7.0 испытаний начать менее чем за 10 секунд.
  • С началом стажировки 2.1.1 начинается через 55-60 секунд.

журналы Селен выглядеть следующим образом (при ведении стажера 2.1.1):

01:26:50.195 INFO - Launching a standalone server 
01:26:50.388 INFO - Java: Oracle Corporation 24.51-b03 
01:26:50.388 INFO - OS: Mac OS X 10.9.5 x86_64 
01:26:50.487 INFO - v2.43.1, with Core v2.43.1. Built from revision 5163bce 
01:26:50.734 INFO - Default driver org.openqa.selenium.ie.InternetExplorerDriver registration is skipped: registration capabilities Capabilities [{platform=WINDOWS, ensureCleanSession=true, browserName=internet explorer, version=}] does not match with current platform: MAC 
01:26:50.846 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub 
01:26:50.847 INFO - Version Jetty/5.1.x 
01:26:50.850 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver] 
01:26:50.851 INFO - Started HttpContext[/selenium-server,/selenium-server] 
01:26:50.851 INFO - Started HttpContext[/,/] 
01:26:56.063 INFO - Started org.openqa.jetty[email protected] 
01:26:56.064 INFO - Started HttpContext[/wd,/wd] 
01:26:56.101 INFO - Started SocketListener on 0.0.0.0:4444 
01:26:56.101 INFO - Started [email protected] 
01:27:24.536 INFO - Executing: [new session: Capabilities [{idle-timeout=60, browserName=chrome, name=tests/intern_local, selenium-version=2.43.1, chromeOptions={args=[test-type]}}]]) 
01:27:24.592 INFO - Creating a new session for Capabilities [{idle-timeout=60, browserName=chrome, name=tests/intern_local, selenium-version=2.43.1, chromeOptions={args=[test-type]}}] 
Starting ChromeDriver (v2.10.267517) on port 32601 
Only local connections are allowed. 
01:27:26.447 INFO - Done: [new session: Capabilities [{idle-timeout=60, browserName=chrome, name=tests/intern_local, selenium-version=2.43.1, chromeOptions={args=[test-type]}}]] 
01:27:26.465 INFO - Executing: [get: about:blank]) 
01:27:26.865 INFO - Done: [get: about:blank] 
01:27:26.875 INFO - Executing: [get location context]) 
01:27:26.876 INFO - Executing: [take screenshot]) 
01:27:26.876 INFO - Executing: [get local storage size]) 
01:27:26.876 INFO - Executing: [doubleclick: no args]) 
01:27:26.878 INFO - Executing: [execute async script: arguments[0](true);, []]) 
01:27:27.109 INFO - Done: [take screenshot] 
01:27:27.114 INFO - Executing: [Long press: null]) 
01:27:27.154 INFO - Done: [doubleclick: no args] 
01:27:27.158 INFO - Executing: [get window size]) 
01:27:27.169 INFO - Done: [execute async script: arguments[0](true);, []] 
01:27:27.169 WARN - Exception thrown 
java.lang.UnsupportedOperationException: Underlying driver does not implement advanced user interactions yet. 
    at org.openqa.selenium.support.events.EventFiringWebDriver.getTouch(EventFiringWebDriver.java:311) 
    at org.openqa.selenium.remote.server.handler.interactions.touch.LongPressOnElement.call(LongPressOnElement.java:40) 
    at org.openqa.selenium.remote.server.handler.interactions.touch.LongPressOnElement.call(LongPressOnElement.java:1) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
    at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:169) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:744) 
01:27:27.189 WARN - Exception: Underlying driver does not implement advanced user interactions yet. 
01:27:27.205 INFO - Done: [get window size] 
01:27:27.212 INFO - Executing: [set window size]) 
01:27:27.323 INFO - Done: [set window size] 
01:27:31.956 WARN - Exception thrown 
org.openqa.selenium.WebDriverException: unknown error: Location must be set before it can be retrieved 
    (Session info: chrome=37.0.2062.124) 
    (Driver info: chromedriver=2.10.267517,platform=Mac OS X 10.9.5 x86_64) (WARNING: The server did not provide any stacktrace information) 
Command duration or timeout: 3 milliseconds 
Build info: version: '2.43.1', revision: '5163bce', time: '2014-09-10 16:27:33' 
System info: host: 'N/A', ip: 'N/A', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.9.5', java.version: '1.7.0_51' 
Session ID: 25d1fbe63300966edb133612003055d1 
Driver info: org.openqa.selenium.chrome.ChromeDriver 
Capabilities [{platform=MAC, acceptSslCerts=true, javascriptEnabled=true, browserName=chrome, chrome={userDataDir=/var/folders/zx/954mnbfn6s145t6d04g5nr5h0000gq/T/.org.chromium.Chromium.dGVeyG}, rotatable=false, locationContextEnabled=true, version=37.0.2062.124, takesHeapSnapshot=true, cssSelectorsEnabled=true, databaseEnabled=false, handlesAlerts=true, browserConnectionEnabled=false, nativeEvents=true, webStorageEnabled=true, applicationCacheEnabled=false, takesScreenshot=true}] 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:204) 
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:156) 
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:599) 
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:614) 
    at org.openqa.selenium.remote.RemoteExecuteMethod.execute(RemoteExecuteMethod.java:32) 
    at org.openqa.selenium.remote.html5.RemoteLocationContext.location(RemoteLocationContext.java:38) 
    at org.openqa.selenium.chrome.ChromeDriver.location(ChromeDriver.java:195) 
    at org.openqa.selenium.remote.server.handler.html5.GetLocationContext.call(GetLocationContext.java:31) 
    at org.openqa.selenium.remote.server.handler.html5.GetLocationContext.call(GetLocationContext.java:1) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
    at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:169) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:744) 
01:27:37.029 WARN - Exception thrown 
org.openqa.selenium.WebDriverException: unknown error: Runtime.evaluate threw exception: SecurityError: Failed to read the 'localStorage' property from 'Window': Access is denied for this document. 
    (Session info: chrome=37.0.2062.124) 
    (Driver info: chromedriver=2.10.267517,platform=Mac OS X 10.9.5 x86_64) (WARNING: The server did not provide any stacktrace information) 
Command duration or timeout: 8 milliseconds 
Build info: version: '2.43.1', revision: '5163bce', time: '2014-09-10 16:27:33' 
System info: host: 'N/A', ip: 'N/A', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.9.5', java.version: '1.7.0_51' 
Session ID: 25d1fbe63300966edb133612003055d1 
Driver info: org.openqa.selenium.chrome.ChromeDriver 
Capabilities [{platform=MAC, acceptSslCerts=true, javascriptEnabled=true, browserName=chrome, chrome={userDataDir=/var/folders/zx/954mnbfn6s145t6d04g5nr5h0000gq/T/.org.chromium.Chromium.dGVeyG}, rotatable=false, locationContextEnabled=true, version=37.0.2062.124, takesHeapSnapshot=true, cssSelectorsEnabled=true, databaseEnabled=false, handlesAlerts=true, browserConnectionEnabled=false, nativeEvents=true, webStorageEnabled=true, applicationCacheEnabled=false, takesScreenshot=true}] 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:204) 
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:156) 
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:599) 
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:614) 
    at org.openqa.selenium.remote.RemoteExecuteMethod.execute(RemoteExecuteMethod.java:32) 
    at org.openqa.selenium.remote.html5.RemoteLocalStorage.size(RemoteLocalStorage.java:72) 
    at org.openqa.selenium.remote.server.handler.html5.GetLocalStorageSize.call(GetLocalStorageSize.java:30) 
    at org.openqa.selenium.remote.server.handler.html5.GetLocalStorageSize.call(GetLocalStorageSize.java:1) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
    at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:169) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:744) 
01:27:47.173 WARN - Exception: unknown error: Location must be set before it can be retrieved 
    (Session info: chrome=37.0.2062.124) 
    (Driver info: chromedriver=2.10.267517,platform=Mac OS X 10.9.5 x86_64) (WARNING: The server did not provide any stacktrace information) 
Command duration or timeout: 3 milliseconds 
Build info: version: '2.43.1', revision: '5163bce', time: '2014-09-10 16:27:33' 
System info: host: 'N/A', ip: 'N/A', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.9.5', java.version: '1.7.0_51' 
Session ID: 25d1fbe63300966edb133612003055d1 
Driver info: org.openqa.selenium.chrome.ChromeDriver 
Capabilities [{platform=MAC, acceptSslCerts=true, javascriptEnabled=true, browserName=chrome, chrome={userDataDir=/var/folders/zx/954mnbfn6s145t6d04g5nr5h0000gq/T/.org.chromium.Chromium.dGVeyG}, rotatable=false, locationContextEnabled=true, version=37.0.2062.124, takesHeapSnapshot=true, cssSelectorsEnabled=true, databaseEnabled=false, handlesAlerts=true, browserConnectionEnabled=false, nativeEvents=true, webStorageEnabled=true, applicationCacheEnabled=false, takesScreenshot=true}] 
01:27:57.321 WARN - Exception: unknown error: Runtime.evaluate threw exception: SecurityError: Failed to read the 'localStorage' property from 'Window': Access is denied for this document. 
    (Session info: chrome=37.0.2062.124) 
    (Driver info: chromedriver=2.10.267517,platform=Mac OS X 10.9.5 x86_64) (WARNING: The server did not provide any stacktrace information) 
Command duration or timeout: 8 milliseconds 
Build info: version: '2.43.1', revision: '5163bce', time: '2014-09-10 16:27:33' 
System info: host: 'N/A', ip: 'N/A', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.9.5', java.version: '1.7.0_51' 
Session ID: 25d1fbe63300966edb133612003055d1 
Driver info: org.openqa.selenium.chrome.ChromeDriver 
Capabilities [{platform=MAC, acceptSslCerts=true, javascriptEnabled=true, browserName=chrome, chrome={userDataDir=/var/folders/zx/954mnbfn6s145t6d04g5nr5h0000gq/T/.org.chromium.Chromium.dGVeyG}, rotatable=false, locationContextEnabled=true, version=37.0.2062.124, takesHeapSnapshot=true, cssSelectorsEnabled=true, databaseEnabled=false, handlesAlerts=true, browserConnectionEnabled=false, nativeEvents=true, webStorageEnabled=true, applicationCacheEnabled=false, takesScreenshot=true}] 
01:28:27.773 INFO - Executing: [get: data:text/html;charset=utf-8,%3C!DOCTYPE%20html%3E%3Ctitle%3Ea%3C%2Ftitle%3E]) 
01:28:27.794 INFO - Done: [get: data:text/html;charset=utf-8,%3C!DOCTYPE%20html%3E%3Ctitle%3Ea%3C%2Ftitle%3E] 
01:28:27.799 INFO - Executing: [get title]) 
01:28:27.803 INFO - Done: [get title] 
... 

Моя стажер конфигурация выглядит следующим образом:

define({ 
    proxyPort: 9000, 
    proxyUrl: 'http://localhost:9000/', 

    capabilities: { 
    'selenium-version': '2.43.1' 
    }, 

    environments: [ 
    { browserName: 'chrome'} 
    ], 

    maxConcurrency: 3, 

    tunnel: 'NullTunnel', 
    loader: {}, 
    suites: [], 

    functionalSuites: 'tests/all_functional', 

    reporters: ['console'], 
    excludeInstrumentation: /^tests\// 
}); 

Я пытался использовать Selenium 2.42.2 с chromedriver 2.10 и chromedriver 2.9, но результаты аналогичны.

Update 1

Та же проблема сохраняется с OSX 10.10, Java 1.7.0_51 (Java 7 обновление 71), chromedriver 2.11 и Chrome 38.0.2125.104.

Update 2

я начал смотреть на то, почему существует такая большая задержка между HttpContext и запуска ServletHandler. Отладка показывает, что New random session seed занимает такое долгое время (5 секунд). Кажется, что все ошибки, которые занимают более длительное время, имеют время, кратное 5 (5 с, 10 сек и 25 сек).

В других системах Unix эта проблема была решена путем замены/dev/random на/dev/urandom, но на OSX не должно быть разницы между ними. Я пытался подавать/dev/random с данными, в то время как селен работал, но это не помогло.

Работа с sudo дает тот же результат.

Указание -Djava.security.egd=file:///dev/urandom дает тот же результат.

Обновление 3 На новой машине проблема исчезла. И поскольку у меня уже нет старой машины - ответ останется загадкой.

Единственное, что, по моему мнению, может быть разным между этими машинами, - JDK.

+0

Разница между Интернетом 1,7 и 2.1, вероятно, связано с тестами обнаружения признаков, которые запускает Leadfoot. Однако задержка, которую вы видите, не является нормальной. В моей системе (Mac 10.9.5, Chrome 37.0.2062.124, Selenium 2.43.1, Java 1.7.0_51) и используя указанную выше конфигурацию, время от сеанса, созданного в Selenium, до первоначального запроса 'get' в тест составляет около 3,5 с. – jason0x43

+0

@ jason0x43 - Вы видите те же ошибки в журналах Selenium? Можно ли отключить обнаружение функции или установить эти значения вручную? – bumbu

+0

Да, я вижу те же ошибки - это обычная часть процесса обнаружения функции (это те тесты, которые не прошли, поскольку функции не поддерживаются). В настоящее время нет способа отключить тесты, но поскольку это не то, что обычно происходит, вероятно, стоит попробовать диагностировать проблему. Кажется, что в игре есть какая-то общая медлительность - ваш журнал показывает разрыв в 6s между запущенными HTTPContext и появлением ServletHandler. Это займет всего лишь 0,22 секунды в моей системе. – jason0x43

ответ

3

Я столкнулся с этой проблемой на macOS Sierra при использовании selenium-standalone-server 2.42.2 и chromedriver 2.25. Я пробовал несколько комбинаций версий этих двух при использовании java version 1.8.0_91 безрезультатно.

Проблема была решена путем возврата к предыдущей версии java, java version 1.8.0_45. Не лучшее решение, поэтому я использую http://www.jenv.be/, чтобы идти туда и обратно, когда мне нужно. Это не определяет первопричину проблемы, но я надеюсь, что это решение помогает кому-то, потребовалось некоторое время, чтобы найти его.

Смежные вопросы