[Selenium]Grid模式下运行时打印出当前Case在哪台node机器上运行

当Case在本地运行成功,在Grid模式下运行失败时,我们需要在Grid模式下进行调试,同时登录远程的node去查看运行的情况。

Hub是随机将case分配到某台node上运行的,怎样知道当前的case是运行在哪台node上呢?

可以通过这段代码获取node的信息:

public void getComputerNameOfNode(WebDriver driver){
		String hub = "SZAUTOTEST1";
		int port = 4444;
		HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
		CloseableHttpClient closeableHttpClient = httpClientBuilder.build(); 
		
		String sessionUrl = "http://" + hub + ":" + port+ "/grid/api/testsession?session="+((RemoteWebDriver) driver).getSessionId();
		HttpPost httpPost = new HttpPost(sessionUrl); 
		System.out.println("Http post request is : "+httpPost.getRequestLine());
		try{
			//Execute HTTP request
            HttpResponse httpResponse = closeableHttpClient.execute(httpPost);  
            //Get HTTP response
            HttpEntity entity = httpResponse.getEntity();  
            //Response status
            System.out.println("HTTP status:" + httpResponse.getStatusLine());  
            //Check if response is null
            if (entity != null) {  
            	System.out.println("Content encoding:" + entity.getContentEncoding()); 
            	String jsonString = EntityUtils.toString(entity);
            	System.out.println("Response content:" + jsonString);
            	JSONObject jsonObject = JSONObject.fromObject(jsonString);
            	String proxyID=jsonObject.getString("proxyId");
            	String node = (proxyID.split("//")[1].split(":")[0]);
            	System.out.println("The case is running on this node :" + node);
            }
		}
		catch(IOException e){
			e.printStackTrace();  
		}
		finally{
			try{
				closeableHttpClient.close();  
			}
			catch(IOException e){
				 e.printStackTrace();  
			}
		}
    }  
原文地址:https://www.cnblogs.com/MasterMonkInTemple/p/4562947.html