[Selenium] 在Grid模式下打印出当前Case是在哪台Node上运行

AAAbstractFlow()

public void getComputerNameOfNode(WebDriver driver){
		String CIHub = Environment.getHub();
		String hub = (CIHub.split("//")[1].split(":")[0]);
		String port = (CIHub.split(":")[2].split("/")[0]);
		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);
//		logger.info("Http post request is : "+httpPost.getRequestLine());

		try{
			//Execute HTTP request
            HttpResponse httpResponse = closeableHttpClient.execute(httpPost);
            //Get HTTP response
            HttpEntity entity = httpResponse.getEntity();
            //Response status
//            logger.info("HTTP status:" + httpResponse.getStatusLine());
            //Check if response is null
            if (entity != null) {
//            	logger.info("Content encoding:" + entity.getContentEncoding());
            	String jsonString = EntityUtils.toString(entity);
//            	logger.info("Response content:" + jsonString);
            	JSONObject jsonObject = JSONObject.fromObject(jsonString);
            	String proxyID=jsonObject.getString("proxyId");
            	String node = (proxyID.split("//")[1].split(":")[0]);
            	logger.info("The case is running on this node :" + node);
            }
		}
		catch(IOException e){
			e.printStackTrace();
		}
		finally{
			try{
				closeableHttpClient.close();
			}
			catch(IOException e){
				 e.printStackTrace();
			}
		}
    }

AAAbstractTest()

public class AAAbstractTest extends AbstractTest {
	private static final Logger logger = Logger.getLogger(AAAbstractTest.class);

	@BeforeMethod(alwaysRun=true)
	public void beforeTest(ITestContext context, Method method){
		WebDriver driver = getDriver(method);
		try{
			LoginFlow flow = new LoginFlow(getDriver(method));
			if(Util.isUseGrid()){
				flow.getComputerNameOfNode(driver);
			}
			UserBean userBean = getUser(method);
			flow.login(userBean);
			logger.info(method.getName());

			String loginUser = userBean.getName().toString() + "/" + userBean.getPwd().toString();
			logger.info("Login user is : "+loginUser);
		}
		catch(Exception e){
			logger.info("[AAAbstractTest--beforeTest]==" + method.getName());
		}

	}

}

  

时间: 2024-11-08 03:41:45

[Selenium] 在Grid模式下打印出当前Case是在哪台Node上运行的相关文章

[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; HttpClientBui

剑指offer22:从上往下打印出二叉树的每个节点,同层节点从左至右打印。

1 题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 2 思路和方法 使用一个队列存放节点.先将根节点加入到队列中,然后循环遍历队列中的元素,遍历过程中,访问该节点的左右子节点,再将左右子节点加入到队列中. 例子:1 2 3 4 5 6 7 8 ? 对于第一层,只有根节点 1,第二层有节点2和3.先将根节点1加入到队列中,接下来要打印节点为1的两个子节点,应该在遍历到该根节点时把值为2和3的两个子节点保存到队列.按照从左向右打印的要求,取出2,保存其子节点4:随后取出3,保存其子

printf_s在debug模式下打印未初化变量

今天在调试内核输出的时候发现的 printf_s在打印已经初始化的变量的时候正常输出,但是在打印未初始化的时候出现未料到的数据. 原码是这样的 char buf[15]; DWORD bfread; ReadFile(device, buf, 10, &bfread, NULL); for (int i = 0; i < 10; i++) { printf_s("%x\n", buf[i]); } 输出成了这样 按理一个char为一个字节,输出不可能4个字节,于是我用OL

从上往下打印出二叉树的每个节点,同层节点从左至右打印。

1 /* 2 思路:借助栈来实现 3 树为空时 返回空 4 树不为空 将根节点如队列 5 然后将队列首元素出队列 如果该元素有左子节点那么左子节点入队了 如果该元素有右子节点那么右子节点入队列 6 最后 进队列的顺序也就是出队列的顺序 7 */ 8 import java.util.ArrayList; 9 import java.util.*; 10 import java.util.Iterator; 11 /** 12 public class TreeNode { 13 int val

WPF 在MVVM模式下弹出子窗体的方式

主要是通过一个WindowManager管理类,在window后台代码中通过WindowManager注册需要弹出的窗体类型,在ViewModel通过WindowManager的Show方法,显示出来. WindowManager代码如下: public static class WindowManager { private static Hashtable _RegisterWindow = new Hashtable(); public static void Regiter<T>(st

(C++实现)从上往下打印出二叉树的每个节点,同层节点从左至右打印。

/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class Solution { public: vector<int> PrintFromTopToBottom(TreeNode* root) { vector<int> a; queue<TreeNod

C++从上往下打印出二叉树的每个节点,同层节点从左至右打印(牛客剑指offer)

/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } }; */ class Solution { public: vector<int> PrintFromTopToBottom(TreeNode *root) { queue<TreeNode *> Q; vector<

从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印

题目: 解答: 首先创建BinaryTreeNode 1 public class BinaryTreeNode { 2 int data; 3 BinaryTreeNode lchind; 4 BinaryTreeNode rchind; 5 6 public BinaryTreeNode(int data) { 7 this.data = data; 8 lchind = null; 9 rchind = null; 10 } 11 12 private int getData() { 13

深挖UITableViewCell-编辑多选模式下,引发的深思

前言 在移动端日常开发中,列表**UITableView**的使用频率非常高,而TableView里主要用的就是UITableViewCell,不管是自定义cell,还是系统的cell,还是后期为了优化列表,都离不开操作cell,那么UITableViewCell就有必要研究一下了;至于为什么要整理一篇关于Cell的文章,因为,搜了一下关于cell的文章,基本都是把头文件里面的方法简单介绍一下,没有介绍编辑模式下,cell的一些问题; [说明规定]: 一些简单语法,便于说明问题:* A-->B