Приветствую всех!
Настроил докер по статье Acceptance Testing With No Selenium or PhantomJS Installed
Но не могу понять как запустить тесты в Chromium. Может кто-то подскажет как это делается?
Сейчас при попытке запустить тесты с использованием Chromium, я получаю ошибку
[UnknownServerException]
The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see http://code.google.com/p/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://chromedriver.storage.googleapis.com/index.htm
Неужели надо билдить свой контейнер с исправленным start.sh? @davert
конфиг
chrome:
modules:
config:
WebDriver:
browser: 'chromium'
У вас chromedriver должен быть виден из path. Ну и я не сильно вникал в особенности докер, но вроде и сам chromium должен стоять в докер контейнере. Но возможно я ошибаюсь.
P.S.: А зачем вообще докер тут?)
докер нужен для запуска тестов в нескольких бразуеров через тимсити агента на сервере без GUI
ну тут как - по ошибке не видно переменной. Можете установить ее из кода прямо, никто вам не мешает. Ну или изначально при старте контейнера установите.
В документации ничего не написано по поводу таких параметров. Поэтому я и спрашиваю как сделать.
ArtOfLife
(Sergey Korol)
17.Июль.2015 09:53:33
#6
Прежде чем приступать к работе с webdriver'ом
, начинать надо с изучения официальных источников .
Я работаю не напрямую с webdriver, а через codeception. И в официальной документации об этом ничего не сказано. Как запустить тесты локально с GUI в Chrome я прекрасно знаю. Но меня интересует совершенно другое.
ArtOfLife
(Sergey Korol)
17.Июль.2015 10:08:30
#8
А какая разница - codeception
это или что-то другое? Взаимодействие с браузером происходит по webdriver wire протоколу. Хром из коробки пока не предоставляет такой возможности, потому группой активистов был написан хак в виде стендэлоун сервера - chromedriver
, который собственно и реализует этот протокол для хрома.
1 лайк
По-моему, вы не до конца поняли мой изначальный вопрос.
ArtOfLife
(Sergey Korol)
17.Июль.2015 10:41:20
#10
Все ответы уже были даны выше. В официальном гайде сказано, что путь к драйверу необходимо поместить в PATH
. Разве вы не можете стартануть Docker
с PATH
, в котором будет путь к chromedriver
?
Ну Firefox можно через xvfb запускать в хэдлесс. Думаю с хромо можно тоже самое придумать
1 лайк
дак а что мешает устанавливать из кода?
SUNx2YCH
(Alexander Ivanovsky)
20.Июль.2015 14:48:16
#14
попробуйте лучше официальные образы от команды Selenium:
SUNx2YCH
(Alexander Ivanovsky)
20.Июль.2015 14:50:46
#15
кстати, ишуя по этому поводу висит аж с ноября:
opened 03:52PM - 14 Nov 14 UTC
When I try running tests targeting the chrome browser with Selenium-Env, the web… driver fails saying that the chromedriver path must be set:
```
15:47:51.215 WARN - Exception thrown
java.util.concurrent.ExecutionException: org.openqa.selenium.WebDriverException: java.lang.reflect.InvocationTargetException
Build info: version: '2.44.0', revision: '76d78cf', time: '2014-10-23 20:02:37'
System info: host: '20ed70700620', ip: '172.17.0.6', os.name: 'Linux', os.arch: 'amd64', os.version: '3.16.3-1-ARCH', java.version: '1.7.0_60'
Driver info: driver.version: unknown
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:188)
at org.openqa.selenium.remote.server.DefaultSession.execute(DefaultSession.java:175)
at org.openqa.selenium.remote.server.DefaultSession.<init>(DefaultSession.java:111)
at org.openqa.selenium.remote.server.DefaultSession.createSession(DefaultSession.java:88)
at org.openqa.selenium.remote.server.DefaultDriverSessions.newSession(DefaultDriverSessions.java:108)
at org.openqa.selenium.remote.server.handler.NewSession.handle(NewSession.java:57)
at org.openqa.selenium.remote.server.handler.NewSession.handle(NewSession.java:1)
at org.openqa.selenium.remote.server.rest.ResultConfig.handle(ResultConfig.java:112)
at org.openqa.selenium.remote.server.JsonHttpCommandHandler.handleRequest(JsonHttpCommandHandler.java:172)
at org.openqa.selenium.remote.server.DriverServlet.handleRequest(DriverServlet.java:201)
at org.openqa.selenium.remote.server.DriverServlet.doPost(DriverServlet.java:163)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.openqa.selenium.remote.server.DriverServlet.service(DriverServlet.java:129)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.openqa.jetty.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
at org.openqa.jetty.jetty.servlet.ServletHandler.dispatch(ServletHandler.java:680)
at org.openqa.jetty.jetty.servlet.ServletHandler.handle(ServletHandler.java:571)
at org.openqa.jetty.http.HttpContext.handle(HttpContext.java:1526)
at org.openqa.jetty.http.HttpContext.handle(HttpContext.java:1479)
at org.openqa.jetty.http.HttpServer.service(HttpServer.java:920)
at org.openqa.jetty.http.HttpConnection.service(HttpConnection.java:820)
at org.openqa.jetty.http.HttpConnection.handleNext(HttpConnection.java:986)
at org.openqa.jetty.http.HttpConnection.handle(HttpConnection.java:837)
at org.openqa.jetty.http.SocketListener.handleConnection(SocketListener.java:243)
at org.openqa.jetty.util.ThreadedServer.handle(ThreadedServer.java:358)
at org.openqa.jetty.util.ThreadPool$PoolThread.run(ThreadPool.java:537)
Caused by: org.openqa.selenium.WebDriverException: java.lang.reflect.InvocationTargetException
Build info: version: '2.44.0', revision: '76d78cf', time: '2014-10-23 20:02:37'
System info: host: '20ed70700620', ip: '172.17.0.6', os.name: 'Linux', os.arch: 'amd64', os.version: '3.16.3-1-ARCH', java.version: '1.7.0_60'
Driver info: driver.version: unknown
at org.openqa.selenium.remote.server.DefaultDriverProvider.callConstructor(DefaultDriverProvider.java:69)
at org.openqa.selenium.remote.server.DefaultDriverProvider.newInstance(DefaultDriverProvider.java:53)
at org.openqa.selenium.remote.server.DefaultDriverFactory.newInstance(DefaultDriverFactory.java:54)
at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.java:214)
at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.java:1)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:168)
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:745)
Caused by: java.lang.reflect.InvocationTargetException
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.server.DefaultDriverProvider.callConstructor(DefaultDriverProvider.java:59)
... 9 more
Caused by: java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see http://code.google.com/p/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://chromedriver.storage.googleapis.com/index.html
at com.google.common.base.Preconditions.checkState(Preconditions.java:197)
at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:105)
at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:89)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:139)
... 14 more
15:47:51.221 WARN - Exception: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see http://code.google.com/p/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://chromedriver.storage.googleapis.com/index.html
```