Перейти к содержимому

Фотография

Se Grid + BMP: Unable to find proxy server

Selenium BMP

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 panterka

panterka

    Активный участник

  • Members
  • PipPip
  • 102 сообщений
  • ФИО:Panterochka
  • Город:Saint John


Отправлено 24 января 2014 - 08:01

Добрый день
У меня возникла проблема с использованием BMP с Se Grid. На локальном гриде удалось запустить, запросы перехватываются, а вот на рабочем гриде падает по причине Unable to find proxy server. В чем может быть роблема, как поправить?

 

Вот код:

        Proxy proxy = app.getProxyHelper().getProxy();
        DesiredCapabilities capabilities = new DesiredCapabilities().firefox();
        ........
 
        capabilities.setCapability(CapabilityType.PROXY, proxy);
        driver = new ScreenShotRemoteWebDriver(new URL("http://ip:port/wd/hub"), capabilities);
        .......
 
 
public ProxyHelper(Application manager) throws Exception{
        server = new ProxyServer(0);
        server.start();
        mylogger.setLevel(Level.ALL);

 

 

Спасибо


  • 0

#2 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 24 января 2014 - 13:20

Я могу предположить, что с нода (где запускается браузер) просто напросто не виден прокси по тому адресу, который был передан в 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);

И вот в таком варианте всё отлично работает.


  • 1
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#3 panterka

panterka

    Активный участник

  • Members
  • PipPip
  • 102 сообщений
  • ФИО:Panterochka
  • Город:Saint John


Отправлено 24 января 2014 - 15:01

Спасибо, решение помогло, действительно так работает отлично) 

А также отдельное спасибо за развернутый ответ-помощь с пояснениями!


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных