2016-11-17 6 views
0

У меня есть веб-приложение весны mvc, которое в основном запускает тест селена на клиентской машине.HttpServletRequest getRemoteAddr() возвращает адрес ipv6, но не смог подключиться к нему

Я создал селен-концентратор и узел в клиентской системе, используя следующие команды -

>java -jar selenium-server-standalone-3.0.1.jar -role hub 

>java -Dwebdriver.ie.driver=D:\IEDriver\IEDriverServer.exe -jar selenium-server-standalone-3.0.1.jar -role node -hub http://localhost:4444/grid/register -timeout 20 -browserTimeout 60 

моя весна контроллер принимает параметры для URL и тест селена, используя этот параметр в клиентской системе с помощью RemoteWebDriver

вот моя весна контроллер-

@RequestMapping("/remote-app/{policyNumber}") 
    public @ResponseBody String getOIPA(@PathVariable("policyNumber") String polNumber,HttpServletRequest request) throws MalformedURLException 
    { 
     String clientIp = request.getRemoteAddr(); 
     System.out.println("Input policy number : "+polNumber); 
     System.out.println("Client IP : "+clientIp); 
     oipaService.openOipaAddressScreenRemote(polNumber,clientIp); 
     return "hello "+polNumber+" "+clientIp; 
    } 

вот мой метод обслуживания, который проходит испытания -

public void openOipaAddressScreenRemote(String policyNumber,String ip) throws MalformedURLException { 

     System.out.println("Policy number input : "+policyNumber); 
     String oipaURL = "https://mydom.com/PASJava_Term"; 
     String userName = "user"; 
     String password = "pwd"; 

     //------------------- 

     String remoteUrlString = "http://"+ip+":4444/wd/hub"; 
     System.out.println(remoteUrlString); 
     DesiredCapabilities caps = DesiredCapabilities.internetExplorer(); 

     caps.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true); 

     WebDriver driver = new RemoteWebDriver(new URL(remoteUrlString),caps); 


     //------------------- 

     driver.get(oipaURL);} 

Это дает мне желаемые результаты в клиентских системах моей организации (ПК), который подключается к IPv4-адресу клиента.

Но проблема в том, что когда я использую клиенты Laptop в своей организации, он возвращает мне IPv6, к которому приложение не может подключиться.

Они соединяются именами ноутбуков, например. - lt0. i.e. selenium RemoteWebDriver способен подключиться к http://lt00123:4444/wd/hub

Как определить адрес клиента (ipv4 или имя компьютера) по мере необходимости, если это вообще возможно.

EDIT: после использования решения от here Я решил проблему IPv6. И от here я обнаружил, что мне нужно настроить концентратор на одной машине (желательно на сервере) и узел на клиентской машине с использованием концентратора. теперь моему контроллеру весны не нужно знать адрес клиента. Он уже знает местоположение концентратора.

+0

Возможный дубликат: http://stackoverflow.com/questions/9882357/how-to-set-java-net-preferipv4stack-true-at-runtime –

ответ

0

решение исходной задачи является here

Я просто сделал небольшие изменения в свой код -

Hub создан на сервере Адрес-

>java -jar selenium-server-standalone-3.0.1.jar -role hub -port 4444 

Узел создан на клиентской машине -

>java -Dwebdriver.ie.driver=D:\IEDriver\IEDriverServer.exe -jar selenium-server-standalone-3.0.1.jar -role node -hub http://[server ip]:4444/grid/register -timeout 20 -browserTimeout 60 

Контроллер -

@RequestMapping("/remote-app/{policyNumber}") 
     public @ResponseBody String getOIPA(@PathVariable("policyNumber") String polNumber) throws MalformedURLException 
     { 
      String clientIp = request.getRemoteAddr(); 
      System.out.println("Input policy number : "+polNumber); 
      oipaService.openOipaAddressScreenRemote(polNumber); 
      return "hello "+polNumber; 
     } 

метод Service -

public void openOipaAddressScreenRemote(String policyNumber) throws MalformedURLException { 

     System.out.println("Policy number input : "+policyNumber); 
     String oipaURL = "https://mydom.com/PASJava_Term"; 
     String userName = "user"; 
     String password = "pwd"; 

     //------------------- 

     String remoteUrlString = "http://"+{server ip here}+":4444/wd/hub"; 
     System.out.println(remoteUrlString); 
     DesiredCapabilities caps = DesiredCapabilities.internetExplorer(); 

     caps.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true); 

     WebDriver driver = new RemoteWebDriver(new URL(remoteUrlString),caps); 


     //------------------- 

     driver.get(oipaURL); 
} 

Теперь мой контроллер не нужно знать IP-адрес клиента. Вместо того, чтобы использовать один концентратор и один узел на каждом клиентском компьютере, я использовал один концентратор на сервере и один узел в каждом клиенте.

Теперь я могу протестировать с клиентской стороны клиентскую систему на нескольких клиентах.

 Смежные вопросы

  • Нет связанных вопросов^_^