1. 程式人生 > >使用selenium grid與BrowserMobProxyServer聯合使用

使用selenium grid與BrowserMobProxyServer聯合使用

stack out log ces true cat top int serve

背景:項目主要是做埋點數據,要使用 BrowserMobProxyServer,它相當於做一個代理,在你訪問一個網頁時,通過代理,獲取打開網頁的數據,對比你需要對比數據,所以這個工具提供獲取頁面請求的功能,因為我這裏是使用的grid分發,demo如下

public class fg {

	public static void main(String[] args) {
		String browser = "chrome";
		BrowserMobProxyServer proxy = null;
		// TODO Auto-generated method stub
		DesiredCapabilities brwosers = null;
		try {
			System.out.println("使用的平臺進行啟動的瀏覽器,使用的瀏覽器為:" + browser);
			System.setProperty("webdriver.chrome.driver", "resources/chromedriver.exe");
			proxy = new BrowserMobProxyServer();
			int port = 8750;
			proxy.start(port);
			Proxy seleniumProxy = ClientUtil.createSeleniumProxy(new InetSocketAddress("10.32.5.199", port)); //IP地址一定是你運行的ip地址,不然會提示代理設置錯誤的
			brwosers = DesiredCapabilities.chrome();
			brwosers.setCapability(CapabilityType.PROXY, seleniumProxy);
			RemoteWebDriver driver = new RemoteWebDriver(new URL("http://10.40.6.232:4444/wd/hub"), brwosers);
			driver.manage().window().maximize(); // 設置窗口為最大
			// 獲取driver的session
			String getSession = driver.toString().substring(driver.toString().indexOf("(") + 1,
					driver.toString().indexOf(")"));
			// get請求,獲取在hub上分發到某臺電腦運行
			Map<String, String> getIP = Pub.get("http://10.40.6.232:4444/grid/api/testsession?session=" + getSession);
			Gson gson = new Gson();// 從返回內容中獲取到需要的內容
			Map<String, Object> map = new HashMap<String, Object>();
			map = gson.fromJson(getIP.get("Response"), map.getClass());
			String proxyId = (String) map.get("proxyId");
			System.out.println("服務器運行的ip為:" + proxyId);
			driver.get("https://login.rosewholesale.com/m-users-a-sign.htm");
			Har har = new Har();
			proxy.newHar("login.rosewholesale.com/m-users-a-sign.htm");
			har = proxy.getHar();
			har.writeTo(new java.io.File("C:\\a.txt"));
			proxy.stop();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

  獲取的數據

技術分享圖片

使用selenium grid與BrowserMobProxyServer聯合使用