获取运行浏览器实例(测试)的远程selenium节点的IP地址

时间:2015-03-26 17:17:12

标签: c# selenium selenium-grid

我是seleniumC#初学者。

我设置了selenium集线器以及6个注册到此集线器的远程selenium节点(使用C#作为我的自动化框架)。

当我运行测试时,我需要记录每个测试运行的远程节点的IP地址。这是以编程方式使用C#吗?

2 个答案:

答案 0 :(得分:1)

请从NuGetpackage将RestSharp添加到您的项目中,然后粘贴代码段:

private static void GetNodeIp(string hostName , string port , string sessionId)
{
    try
    {               
        RestClient client = new RestClient("http://" + hostName + ":" + port + "/grid/api/testsession?session=" + sessionId);
        RestRequest req = new RestRequest(Method.GET);
        var resp = client.Execute(req);
        dynamic jsonData = JsonConvert.DeserializeObject(resp.Content);
        Console.WriteLine("Test Will run on Machine : {0}" ,new Uri(jsonData.proxyId.ToString()));
    }
    catch (Exception ex)
    {

    }
}

然后调用上面的方法:

GetNodeIp("localhost", "4444", "ffgfdg-fgfgf-fgdfgfg-sdsdfdsf");

您应该可以使用下面的代码段获取会话ID:

RemoteWebDriver driver = new RemoteWebDriver(new Uri(hubUrl), _capabilities, TimeSpan.FromSeconds(180));
 string session = driver.SessionId.ToString();

不要忘记初始化Desired capabilities对象。

答案 1 :(得分:-1)

为什么现在需要他们的IP地址?节点向集线器注册后,它们已经连接。使用RemoteWebDriver运行测试时,RemoteWebDriver会自动与集线器连接,并将测试传输到已注册的节点。要确保节点已经注册,请通过浏览器http://localhost:4444调用集线器,如果它位于系统本地。如果在一个节点中调用了多个浏览器,则应该看到每个节点的配置选项卡,或者只有一个具有多个浏览器的配置选项卡。节点需要集线器的IP地址,但如果有意义则不需要反过来。