1

不要对我知道在堆栈溢出中很常见的标题感到困惑,但我的问题是不同的。

要求:我在我的框架中实现 Selenium 网格,我需要为用户提供一个选项,让他们选择他们想要运行测试的机器/节点。我设计了一个托管在机器 1 上的基于 UI 的框架,提供机器/节点的下拉列表以从中选择值。根据选择的值,代码将根据机器 IP 创建一个 nodeURL,并在该机器上成功运行测试。下面是代码

if(hostMachine.equals("Machine1"))
    nodeURL = new URL("http://IP:PortNo/wd/hub");

 else if (hostMachine.equalsIgnoreCase("Machine2"))
    nodeURL = new URL("http://IP:PortNo/wd/hub");

同样,我还需要提供用户机器的选项,即用户拥有哪台机器,他/她也应该能够在该机器上运行他们的测试。所以我在下拉列表中添加了我的机器选项,并编写了下面提到的代码来动态获取用户机器的 IP 地址。

else if(hostMachine.equals("My Machine") || hostMachine.equals("Select"))
{    
     try   
     {
     InetAddress ipAddress = InetAddress.getLocalHost();
     nodeURL = new URL("http://"+ipAddress.getHostAddress+":5555/wd/hub");
}

catch(Exception e)
{
            // TODO Auto-generated catch block
            e.printStackTrace();
}

问题:现在我面临的问题是,每当用户选择我的机器时,代码都会获取机器 1 的 IP 地址(当前托管框架的位置)并在那里而不是在用户的机器上运行测试。我已经使用 tomcat 在机器 1 中部署了框架之战并从我的机器访问 URL,以测试但不确定为什么它每次都获取机器 1 的 IP 地址。ipAddress.getHostAddress()是否仅获取主机服务器的 IP 地址?无论如何要从我们尝试访问 URL 的地方获取用户机器的 IP 地址,以便用户选择我的机器选项,代码应该获取他们的机器 IP 并在那里运行测试。将感谢您的帮助。

谢谢,哈桑

4

1 回答 1

0

要获取主机的 Ip,您可以使用 HTML5 的 WebRTC 扩展。这允许 javascript 查询本地客户端 IP 地址 - 假设您的基于 UI 的框架使用 Javascript

于 2018-09-21T19:55:24.983 回答