使用selenium grid與BrowserMobProxyServer聯合使用
阿新 • • 發佈:2018-07-11
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聯合使用