Skip to content

Instantly share code, notes, and snippets.

@shalakaPatil
Last active December 26, 2015 07:09
Show Gist options
  • Save shalakaPatil/7113594 to your computer and use it in GitHub Desktop.
Save shalakaPatil/7113594 to your computer and use it in GitHub Desktop.
Issue with starting clj-webdriver grid locally.
#!/usr/bin/env bash
#
# Usage: grid-hub {start|stop}
#
source $(dirname $0)/util
EXPECTED_ARGS=1
E_BADARGS=65
DO_showUsage() {
echo "Usage: $(basename $0) {start|stop}"
exit $E_BADARGS
}
if [ $# -ne $EXPECTED_ARGS ]; then
DO_showUsage
fi
################################################################################
WEBDRIVER_SERVER_JAR=/opt/selenium-server-standalone.jar
# API default is 4444, so for testing we'll use 3333
WEBDRIVER_HUB_PARAMS="-role hub -port 3333"
WEBDRIVER_HUB_PIDFILE="/tmp/webdriver_hub.pid"
if [ ! -f $WEBDRIVER_SERVER_JAR ]; then
echo "You must place the Selenium-WebDriver standalone JAR file at ${WEBDRIVER_SERVER_JAR} before proceeding."
exit 1
fi
case "$1" in
start)
echo "Starting Selenium-WebDriver Grid2 hub..."
if [ -f $WEBDRIVER_HUB_PIDFILE ]; then
echo "${FAIL_MSG} Selenium-WebDriver Grid2 hub already running with PID $(cat $WEBDRIVER_HUB_PIDFILE). Run 'grid-hub stop' or 'grid-hub restart'."
exit 1
else
START_HUB_CMD="java -jar ${WEBDRIVER_SERVER_JAR} ${WEBDRIVER_HUB_PARAMS}"
$START_HUB_CMD &
PID=$!
echo $PID > "${WEBDRIVER_HUB_PIDFILE}"
echo "${SUCCESS_MSG} Selenium-WebDriver Grid2 hub started successfully."
fi
;;
stop)
echo "Stopping Selenium-WebDriver Grid2 hub..."
if [ -f $WEBDRIVER_HUB_PIDFILE ]; then
PID=$(cat $WEBDRIVER_HUB_PIDFILE)
kill $PID
rm $WEBDRIVER_HUB_PIDFILE
sleep 1
if [[ $(ps -A | egrep "^${PID}") ]]; then
echo "${FAIL_MSG} Tried to kill the hub with PID ${PID}, but was unsuccessful. You need to kill it with something stronger, like 'kill -9'"
exit 1
else
echo "${SUCCESS_MSG} Selenium-WebDriver Grid2 hub stopped successfully."
exit 0
fi
else
echo "${SUCCESS_MSG} Selenium-WebDriver Grid2 hub has already been stopped."
exit 0
fi
;;
restart)
$0 stop
$0 start
;;
*)
DO_showUsage
esac
#!/usr/bin/env bash
#
# Usage: grid-node {start|stop}
#
source $(dirname $0)/util
EXPECTED_ARGS=1
E_BADARGS=65
DO_showUsage() {
echo "Usage: $(basename $0) {start|stop}"
exit $E_BADARGS
}
if [ $# -ne $EXPECTED_ARGS ]; then
DO_showUsage
fi
################################################################################
WEBDRIVER_SERVER_JAR=/opt/selenium-server-standalone.jar
# API default is 4444, so for testing we'll use 3333
WEBDRIVER_NODE_PARAMS="-role node -hubHost 127.0.0.1 -hubPort 3333"
WEBDRIVER_NODE_PIDFILE="/tmp/webdriver_node.pid"
if [ ! -f $WEBDRIVER_SERVER_JAR ]; then
echo "You must place the Selenium-WebDriver standalone JAR file at ${WEBDRIVER_SERVER_JAR} before proceeding."
exit 1
fi
case "$1" in
start)
echo "Starting Selenium-WebDriver Grid2 node..."
if [ -f $WEBDRIVER_NODE_PIDFILE ]; then
echo "${FAIL_MSG} Selenium-WebDriver Grid2 node already running with PID $(cat $WEBDRIVER_NODE_PIDFILE). Run 'grid-node stop' or 'grid-node restart'."
exit 1
else
START_NODE_CMD="java -jar ${WEBDRIVER_SERVER_JAR} ${WEBDRIVER_NODE_PARAMS}"
$START_NODE_CMD &
PID=$!
echo $PID > "${WEBDRIVER_NODE_PIDFILE}"
echo "${SUCCESS_MSG} Selenium-WebDriver Grid2 node started successfully."
fi
;;
stop)
echo "Stopping Selenium-WebDriver Grid2 node..."
if [ -f $WEBDRIVER_NODE_PIDFILE ]; then
PID=$(cat $WEBDRIVER_NODE_PIDFILE)
kill $PID
rm $WEBDRIVER_NODE_PIDFILE
sleep 1
if [[ $(ps -A | egrep "^${PID}") ]]; then
echo "${FAIL_MSG} Tried to kill the node with PID ${PID}, but was unsuccessful. You need to kill it with something stronger, like 'kill -9'"
exit 1
else
echo "${SUCCESS_MSG} Selenium-WebDriver Grid2 node stopped successfully."
exit 0
fi
else
echo "${SUCCESS_MSG} Selenium-WebDriver Grid2 node has already been stopped."
exit 0
fi
;;
restart)
$0 stop
$0 start
;;
*)
DO_showUsage
esac
(ns bugsbunny.core
(:require [clj-webdriver.taxi :refer :all]
[clj-webdriver.core :refer [key-code]]
[clj-webdriver.remote.server :refer [new-remote-session]]
[clojure.test :refer [run-tests]]
[calabash-clj.build.android :as android-build]
[calabash-clj.util :refer [run-sh]]
[bugsbunny.util.settings :refer [load-settings s>]])
(:gen-class))
(def ^:private browser-count (atom 0))
(defonce mobile-runner nil)
(defn browser-up
"Start up a browser if it's not already started."
[]
(when (= 1 (swap! browser-count inc))
(let [[a-server a-driver] (new-remote-session {:port 3333
:host "127.0.0.1"
:existing true}
{:browser :firefox})]
(def grid-server a-server)
(def driver a-driver)
(set-driver! a-driver))
(implicit-wait 1000)))
shalaka@Shalakas-MacBook-Pro.local:~/grid-bash-scripts $ bash grid-hub start
grid-hub: line 7: ./util: No such file or directory
Starting Selenium-WebDriver Grid2 hub...
Selenium-WebDriver Grid2 hub started successfully.
shalaka@Shalakas-MacBook-Pro.local:~/grid-bash-scripts $ Oct 23, 2013 11:40:54 AM org.openqa.grid.selenium.GridLauncher main
INFO: Launching a selenium grid server
2013-10-23 11:40:59.639:INFO:osjs.Server:jetty-7.x.y-SNAPSHOT
2013-10-23 11:40:59.676:INFO:osjsh.ContextHandler:started o.s.j.s.ServletContextHandler{/,null}
2013-10-23 11:40:59.684:INFO:osjs.AbstractConnector:Started SocketConnector@0.0.0.0:3333
Oct 23, 2013 11:46:56 AM org.openqa.grid.web.servlet.handler.RequestHandler process
INFO: Got a request to create a new session: {platform=ANY, browserName=firefox, version=}
Oct 23, 2013 11:46:56 AM org.openqa.grid.internal.ProxySet getNewSession
INFO: Available nodes: [host :http://192.168.254.165:5555 time out : 300000]
Oct 23, 2013 11:46:56 AM org.openqa.grid.internal.BaseRemoteProxy getNewSession
INFO: Trying to create a new session on node host :http://192.168.254.165:5555 time out : 300000
Oct 23, 2013 11:46:56 AM org.openqa.grid.internal.TestSlot getNewSession
INFO: Trying to create a new session on test slot {seleniumProtocol=WebDriver, platform=MAC, browserName=firefox, maxInstances=5}
Oct 23, 2013 11:52:05 AM SessionCleanup
WARNING: session ext. key c0406c2e-c028-4c9f-b061-e939f5311682 has TIMED OUT due to client inactivity and will be released.
Oct 23, 2013 11:57:30 AM org.openqa.grid.web.servlet.handler.RequestHandler process
INFO: Got a request to create a new session: {platform=ANY, browserName=firefox, version=}
Oct 23, 2013 11:57:30 AM org.openqa.grid.internal.ProxySet getNewSession
INFO: Available nodes: [host :http://192.168.254.165:5555 time out : 300000]
Oct 23, 2013 11:57:30 AM org.openqa.grid.internal.BaseRemoteProxy getNewSession
INFO: Trying to create a new session on node host :http://192.168.254.165:5555 time out : 300000
Oct 23, 2013 11:57:30 AM org.openqa.grid.internal.TestSlot getNewSession
INFO: Trying to create a new session on test slot {seleniumProtocol=WebDriver, platform=MAC, browserName=firefox, maxInstances=5}
Oct 23, 2013 11:58:05 AM org.openqa.grid.web.servlet.handler.RequestHandler process
INFO: Got a request to create a new session: {platform=ANY, browserName=firefox, version=}
Oct 23, 2013 11:58:05 AM org.openqa.grid.internal.ProxySet getNewSession
INFO: Available nodes: [host :http://192.168.254.165:5555 time out : 300000]
Oct 23, 2013 11:58:05 AM org.openqa.grid.internal.BaseRemoteProxy getNewSession
INFO: Trying to create a new session on node host :http://192.168.254.165:5555 time out : 300000
Oct 23, 2013 11:58:05 AM org.openqa.grid.internal.TestSlot getNewSession
INFO: Trying to create a new session on test slot {seleniumProtocol=WebDriver, platform=MAC, browserName=firefox, maxInstances=5}
shalaka@Shalakas-MacBook-Pro.local:~/grid-bash-scripts $ Oct 23, 2013 12:02:36 PM SessionCleanup
WARNING: session ext. key 39026bf9-6bb2-40c8-82b2-39f0599894c3 has TIMED OUT due to client inactivity and will be released.
Oct 23, 2013 12:03:11 PM SessionCleanup
WARNING: session ext. key cb9b714d-d8f8-4b64-9fc3-80d389e4cf95 has TIMED OUT due to client inactivity and will be released.
shalaka@Shalakas-MacBook-Pro.local:~/grid-bash-scripts $
shalaka@Shalakas-MacBook-Pro.local:~/grid-bash-scripts $ bash grid-node start
grid-node: line 7: ./util: No such file or directory
Starting Selenium-WebDriver Grid2 node...
Selenium-WebDriver Grid2 node started successfully.
shalaka@Shalakas-MacBook-Pro.local:~/grid-bash-scripts $ Oct 23, 2013 11:41:15 AM org.openqa.grid.selenium.GridLauncher main
INFO: Launching a selenium grid node
11:41:25.663 INFO - Java: Apple Inc. 20.51-b01-457
11:41:25.663 INFO - OS: Mac OS X 10.8.5 x86_64
11:41:25.671 INFO - v2.37.0, with Core v2.37.0. Built from revision a7c61cb
11:41:25.715 INFO - Default driver org.openqa.selenium.ie.InternetExplorerDriver registration is skipped: registration capabilities Capabilities [{platform=WINDOWS, ensureClea$Session=true, browserName=internet explorer, version=}] does not match with current platform: MAC
11:41:25.740 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:5555/wd/hub
11:41:25.741 INFO - Version Jetty/5.1.x
11:41:25.742 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]
11:41:25.743 INFO - Started HttpContext[/selenium-server,/selenium-server]
11:41:25.743 INFO - Started HttpContext[/,/]
11:41:25.751 INFO - Started org.openqa.jetty.jetty.servlet.ServletHandler@19c5466b
11:41:25.751 INFO - Started HttpContext[/wd,/wd]
11:41:25.755 INFO - Started SocketListener on 0.0.0.0:5555
11:41:25.755 INFO - Started org.openqa.jetty.jetty.Server@3c6210fb
11:41:25.756 INFO - using the json request : {"class":"org.openqa.grid.common.RegistrationRequest","capabilities":[{"platform":"MAC","seleniumProtocol":"Selenium","browserName$:"*firefox","maxInstances":5},{"platform":"MAC","seleniumProtocol":"Selenium","browserName":"*googlechrome","maxInstances":5},{"platform":"MAC","seleniumProtocol":"Selenium","$rowserName":"*iexplore","maxInstances":1},{"platform":"MAC","seleniumProtocol":"WebDriver","browserName":"firefox","maxInstances":5},{"platform":"MAC","seleniumProtocol":"WebD$iver","browserName":"chrome","maxInstances":5},{"platform":"MAC","seleniumProtocol":"WebDriver","browserName":"internet explorer","maxInstances":1}],"configuration":{"port":55$5,"register":true,"host":"192.168.254.165","proxy":"org.openqa.grid.selenium.proxy.DefaultRemoteProxy","maxSession":5,"role":"node","hubHost":"127.0.0.1","registerCycle":5000,$hubPort":3333,"url":"http://192.168.254.165:5555","remoteHost":"http://192.168.254.165:5555"}}
11:41:25.756 INFO - Starting auto register thread. Will try to register every 5000 ms.
11:41:25.757 INFO - Registering the node to hub :http://127.0.0.1:3333/grid/register
11:46:56.990 INFO - Executing: [new session: {platform=ANY, browserName=firefox, version=}] at URL: /session)
11:46:57.000 INFO - Creating a new session for Capabilities [{platform=ANY, browserName=firefox, version=}]
11:47:04.115 INFO - Done: /session
11:52:05.870 INFO - Executing: [delete session: c0406c2e-c028-4c9f-b061-e939f5311682] at URL: /session/c0406c2e-c028-4c9f-b061-e939f5311682)
11:52:05.942 INFO - Done: /session/c0406c2e-c028-4c9f-b061-e939f5311682
11:57:30.977 INFO - Executing: [new session: {platform=ANY, browserName=firefox, version=}] at URL: /session)
11:57:30.977 INFO - Creating a new session for Capabilities [{platform=ANY, browserName=firefox, version=}]
11:57:32.503 INFO - Done: /session
11:58:05.360 INFO - Executing: [new session: {platform=ANY, browserName=firefox, version=}] at URL: /session)
11:58:05.361 INFO - Creating a new session for Capabilities [{platform=ANY, browserName=firefox, version=}]
11:58:06.825 INFO - Done: /session
shalaka@Shalakas-MacBook-Pro.local:~/grid-bash-scripts $ 12:02:36.032 INFO - Executing: [delete session: 39026bf9-6bb2-40c8-82b2-39f0599894c3] at URL: /session/39026bf9-6bb2-40c8-82b2-39f0599894c3)
12:02:36.103 INFO - Done: /session/39026bf9-6bb2-40c8-82b2-39f0599894c3
12:03:11.110 INFO - Executing: [delete session: cb9b714d-d8f8-4b64-9fc3-80d389e4cf95] at URL: /session/cb9b714d-d8f8-4b64-9fc3-80d389e4cf95)
12:03:11.185 INFO - Done: /session/cb9b714d-d8f8-4b64-9fc3-80d389e4cf95
shalaka@Shalakas-MacBook-Pro.local:~/grid-bash-scripts $
lein test :only bugsbunny.moby-sections/edit-section
ERROR in (edit-section) (core_deftype.clj:541)
Uncaught exception, not in assertion.
expected: nil
actual: java.lang.IllegalArgumentException: No implementation of method: :windows of protocol: #'clj-webdriver.core/ITargetLocator found for class: clojure.lang.Var$Unbound
at clojure.core$_cache_protocol_fn.invoke (core_deftype.clj:541)
clj_webdriver.core$eval1909$fn__1947$G__1898__1952.invoke (core.clj:57)
clj_webdriver.taxi$windows.invoke (taxi.clj:453)
clj_webdriver.taxi$windows.invoke (taxi.clj:451)
bugsbunny.moby_sections/fn (moby_sections.clj:67)
clojure.test$test_var$fn__7145.invoke (test.clj:701)
clojure.test$test_var.invoke (test.clj:701)
clojure.test$test_all_vars$fn__7149$fn__7156.invoke (test.clj:717)
clojure.test$default_fixture.invoke (test.clj:671)
clojure.test$test_all_vars$fn__7149.invoke (test.clj:717)
clojure.test$default_fixture.invoke (test.clj:671)
clojure.test$test_all_vars.invoke (test.clj:713)
clojure.test$test_ns.invoke (test.clj:736)
clojure.core$map$fn__4207.invoke (core.clj:2487)
clojure.lang.LazySeq.sval (LazySeq.java:42)
clojure.lang.LazySeq.seq (LazySeq.java:60)
clojure.lang.Cons.next (Cons.java:39)
clojure.lang.RT.next (RT.java:598)
clojure.core$next.invoke (core.clj:64)
clojure.core$reduce1.invoke (core.clj:896)
clojure.core$reduce1.invoke (core.clj:887)
clojure.core$merge_with.doInvoke (core.clj:2702)
clojure.lang.RestFn.applyTo (RestFn.java:139)
clojure.core$apply.invoke (core.clj:619)
clojure.test$run_tests.doInvoke (test.clj:751)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.core$apply.invoke (core.clj:617)
user$eval107$fn__162$fn__193.invoke (NO_SOURCE_FILE:-1)
user$eval107$fn__162$fn__163.invoke (NO_SOURCE_FILE:0)
user$eval107$fn__162.invoke (NO_SOURCE_FILE:-1)
user$eval107.invoke (NO_SOURCE_FILE:0)
clojure.lang.Compiler.eval (Compiler.java:6619)
clojure.lang.Compiler.eval (Compiler.java:6609)
clojure.lang.Compiler.eval (Compiler.java:6582)
clojure.core$eval.invoke (core.clj:2852)
leiningen.core.eval/fn (eval.clj:284)
clojure.lang.MultiFn.invoke (MultiFn.java:231)
leiningen.core.eval$eval_in_project.invoke (eval.clj:306)
leiningen.test$test.doInvoke (test.clj:196)
clojure.lang.RestFn.invoke (RestFn.java:423)
clojure.lang.Var.invoke (Var.java:419)
clojure.lang.AFn.applyToHelper (AFn.java:163)
clojure.lang.Var.applyTo (Var.java:532)
clojure.core$apply.invoke (core.clj:619)
leiningen.core.main$resolve_task$fn__1269.doInvoke (main.clj:151)
clojure.lang.RestFn.applyTo (RestFn.java:139)
clojure.lang.AFunction$1.doInvoke (AFunction.java:29)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.core$apply.invoke (core.clj:619)
leiningen.core.main$apply_task.invoke (main.clj:192)
leiningen.core.main$resolve_and_apply.invoke (main.clj:196)
leiningen.core.main$_main$fn__1332.invoke (main.clj:265)
leiningen.core.main$_main.doInvoke (main.clj:252)
clojure.lang.RestFn.invoke (RestFn.java:421)
clojure.lang.Var.invoke (Var.java:419)
clojure.lang.AFn.applyToHelper (AFn.java:163)
clojure.lang.Var.applyTo (Var.java:532)
clojure.core$apply.invoke (core.clj:617)
clojure.main$main_opt.invoke (main.clj:335)
clojure.main$main.doInvoke (main.clj:440)
clojure.lang.RestFn.invoke (RestFn.java:457)
clojure.lang.Var.invoke (Var.java:427)
clojure.lang.AFn.applyToHelper (AFn.java:172)
clojure.lang.Var.applyTo (Var.java:532)
clojure.main.main (main.java:37)
Ran 15 tests containing 15 assertions.
0 failures, 15 errors.
Tests failed.
Suppressed exit
(defproject bugsbunny "0.1.0"
:description "clj-web-driver-boilerplate"
:license {:name "MIT License"
:url "https://github.com/greywolve/clj-webdriver-boilerplate/blob/master/LICENSE"}
:dependencies [[org.clojure/clojure "1.5.1"]
[com.draines/postal "1.11.0"]
[clj-webdriver "0.6.0" :exclusions [org.seleniumhq.selenium/selenium-server]]
[org.seleniumhq.selenium/selenium-server "2.35.0"]
[clj-http "0.7.7"]
[org.clojure/tools.logging "0.2.6"]
[org.clojure/data.json "0.2.3"]]
:test-selectors {:web :web
:android :android}
:eval-in :leiningen
:main bugsbunny.core)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment