不要对我知道在堆栈溢出中很常见的标题感到困惑,但我的问题是不同的。
要求:我在我的框架中实现 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 并在那里运行测试。将感谢您的帮助。
谢谢,哈桑