Я могу предположить, что с нода (где запускается браузер) просто напросто не виден прокси по тому адресу, который был передан в capabilities. Как это проверить и как исправить, если причина действительно в этом.
Давайте рассмотрим пример. Моя локальная машина имеет адрес 192.168.0.100, на ней запускаются тесты. На второй машине, которая имеет адрес 192.168.0.102, работает нод (где находится хаб в данном случае неважно).
Теперь я запускаю BrowserMobProxy и проверяю, какой адрес он мне отдаст, чтобы передать его в capabilities:
int port = 8071;
ProxyServer bmp = new ProxyServer(port);
bmp.start();
Proxy proxy = bmp.seleniumProxy();
System.out.println(proxy.getHttpProxy());
На консоль выводится
alexei-pc:8071
Это имя моей машины, оно прописано локально, а не на DNS-сервере, поэтому другие машины (в том числе та, где находится нод) по этому имени найти прокси не смогут. Это можно легко проверить -- запустить на второй машине консоль и попробовать попинговать по адресу alexei-pc -- выдаётся сообщение "unknown host". Вот и причина, почему прокси недоступен.
Чтобы исправить это, достаточно вручную указать правильные настройки прокси, например, по IP-адресу:
String ipAddress = new NetworkUtils().getIp4NonLoopbackAddressOfThisMachine().getHostAddress();
int port = 8071;
ProxyServer bmp = new ProxyServer(port);
bmp.start();
Proxy proxy = new Proxy();
proxy.setHttpProxy(ipAddress + ":" + port);
DesiredCapabilities caps = DesiredCapabilities.firefox();
caps.setCapability(CapabilityType.PROXY, proxy);
WebDriver driver = new RemoteWebDriver(new URL("http://192.168.0.102:4444/wd/hub"), caps);
И вот в таком варианте всё отлично работает.