【发布时间】:2016-11-17 06:20:25
【问题描述】:
我有一个 spring mvc web-app,它基本上在客户端机器上运行 selenium 测试。
我使用以下命令在客户端系统中创建了一个 selenium-hub 和节点 -
>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
我的 spring 控制器获取 url 的参数并使用 RemoteWebDriver 在客户端系统中使用该参数运行 selenium 测试
这是我的弹簧控制器-
@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);}
它在我组织的客户端系统 (PC) 中为我提供了所需的结果,该系统连接到客户端的 IPv4 地址。
但问题是,当我在组织中使用笔记本电脑客户端时,它会返回 IPv6,而应用程序无法连接。
他们通过笔记本电脑名称进行连接,例如- lt00123。
即 selenium RemoteWebDriver 能够连接到http://lt00123:4444/wd/hub
如果可能的话,如何根据需要识别客户端地址(ipv4 或机器名称)。
编辑:使用here 的解决方案后,我解决了 IPv6 问题。从here 我发现我需要在一台机器上设置集线器(最好在服务器位置),并使用集线器在客户端机器上设置节点。现在我的弹簧控制器不需要知道客户的地址。它已经知道枢纽的位置。
【问题讨论】:
标签: java spring-mvc selenium ip remotewebdriver