debugging
diff --git a/tools/wptrunner/wptrunner/executors/executorwebdriver.py b/tools/wptrunner/wptrunner/executors/executorwebdriver.py
index 72d2191..62a56f6 100644
--- a/tools/wptrunner/wptrunner/executors/executorwebdriver.py
+++ b/tools/wptrunner/wptrunner/executors/executorwebdriver.py
@@ -7,6 +7,8 @@
 import traceback
 import urlparse
 import uuid
+import requests
+import time
 
 from .base import (Protocol,
                    RefTestExecutor,
@@ -28,7 +30,7 @@
         TestharnessExecutor.__init__(self, browser, server_config,
                                      timeout_multiplier=timeout_multiplier,
                                      debug_info=debug_info)
-        self.protocol = DriverProtocol(self, browser)
+        self.protocol = DriverProtocol(self, browser, capabilities)
         with open(os.path.join(here, "testharness_webdriver.js")) as f:
             self.script = f.read()
         with open(os.path.join(here, "testharness_webdriver_resume.js")) as f:
@@ -45,9 +47,9 @@
 
     def do_test(self, test):
         url = self.test_url(test)
-
+        print(test.timeout)
+        print(self.timeout_multiplier)
         success, data = WebDriverRun(self.do_testharness,
-                                     self.protocol.webdriver_binary,
                                      url,
                                      test.timeout * self.timeout_multiplier).run()
 
@@ -56,7 +58,7 @@
 
         return (test.result_cls(*data), [])
 
-    def do_testharness(self, webdriver, url, timeout):
+    def do_testharness(self, url, timeout):
         self.logger.debug("Running the test harness!")
         format_map = {"abs_url": url,
                       "url": strip_server(url),
@@ -104,12 +106,57 @@
 class CallbackHandler(object):
     pass
 
-class DriverProtocol(object):
-    def __init__(self, executor, browser):
-        pass
+class DriverProtocol(Protocol):
+    def __init__(self, executor, browser, capabilities, **kwargs):
+        Protocol.__init__(self, executor, browser)
+        self.url = browser.webdriver_url
+        self.capabilities = capabilities
 
     def setup(self, runner):
         """Connect to browser using WebDriver API directly"""
+        self.runner = runner
+        self.logger.debug("Connecting to Webdriver on URL: %s" % self.url)
+
+
+        session_started = False
+        # time.sleep(100)
+
+        try:
+            # TODO
+            driver_capabilities = {"alwaysMatch": self.capabilities}
+            print(driver_capabilities)
+            # str_driver_capabilities = str(driver_capabilities).replace('\'', '&')
+            # str_driver_capabilities = str_driver_capabilities.replace('\"', "'")
+            # str_driver_capabilities = str_driver_capabilities.replace('&', '"')
+            # print(str_driver_capabilities)
+            r = requests.post("{}/session".format(self.url.strip("/")), data=driver_capabilities)
+            print(r.text)
+        #     #webdriver.Remote(command_executor=RemoteConnection(self.url.strip("/"),
+        #                                         #                                resolve_ip=False),
+        #                                      # desired_capabilities=self.capabilities)
+        except:
+            self.logger.warning(
+                "Connecting to WebDriver failed:\n%s" % traceback.format_exc())
+        else:
+            self.executor.runner.send_message("init_succeeded")
+            session_started = True
+        # else:
+        #     self.logger.debug("Selenium session started")
+        #     session_started = True
+        #
+        if not session_started:
+            self.logger.warning("Failed to connect to Selenium")
+            self.executor.runner.send_message("init_failed")
+        # else:
+        #     try:
+        #         self.after_connect()
+        #     except:
+        #         print >> sys.stderr, traceback.format_exc()
+        #         self.logger.warning(
+        #             "Failed to connect to navigate initial page")
+        #         self.executor.runner.send_message("init_failed")
+        #     else:
+        #         self.executor.runner.send_message("init_succeeded")
 
     def teardown(self):
         print('teardown')
@@ -132,10 +179,9 @@
         pass
 
 class WebDriverRun(object):
-    def __init__(self, func, webdriver, url, timeout):
+    def __init__(self, func, url, timeout):
         self.func = func
         self.result = None
-        self.webdriver = webdriver
         self.url = url
         self.timeout = timeout
         self.result_flag = threading.Event()
@@ -143,11 +189,11 @@
     def run(self):
         timeout = self.timeout
 
-        try:
-            self.webdriver.set_script_timeout((timeout + extra_timeout) * 1000)
-        except exceptions.ErrorInResponseException:
-            self.logger.error("Lost WebDriver connection")
-            return Stop
+        # try:
+        #     self.webdriver.set_script_timeout((timeout + extra_timeout) * 1000)
+        # except exceptions.ErrorInResponseException:
+        #     self.logger.error("Lost WebDriver connection")
+        #     return Stop
 
         executor = threading.Thread(target=self._run)
         executor.start()
@@ -157,20 +203,23 @@
             assert not flag
             self.result = False, ("EXTERNAL-TIMEOUT", None)
 
-        return self.result
+        return self.result, None
 
     def _run(self):
         try:
             self.result = True, self.func(self.webdriver, self.url, self.timeout)
-        except exceptions.TimeoutException:
-            self.result = False, ("EXTERNAL-TIMEOUT", None)
-        except (socket.timeout, exceptions.ErrorInResponseException):
-            self.result = False, ("CRASH", None)
-        except Exception as e:
-            message = getattr(e, "message", "")
-            if message:
-                message += "\n"
-            message += traceback.format_exc(e)
-            self.result = False, ("ERROR", e)
-        finally:
-            self.result_flag.set()
+        except:
+            print("BAD")
+        # except exceptions.TimeoutException:
+        #     self.result = False, ("EXTERNAL-TIMEOUT", None)
+        # except (socket.timeout, exceptions.ErrorInResponseException):
+        #     self.result = False, ("CRASH", None)
+        # except Exception as e:
+        #     message = getattr(e, "message", "")
+        #     if message:
+        #         message += "\n"
+        #     message += traceback.format_exc(e)
+        #     self.result = False, ("ERROR", e)
+        # finally:
+        #     self.result_flag.set()
+        self.result = True