使用selenium grid与BrowserMobProxyServer联合使用

Posted chongyou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用selenium grid与BrowserMobProxyServer联合使用相关的知识,希望对你有一定的参考价值。

背景:项目主要是做埋点数据,要使用 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联合使用的主要内容,如果未能解决你的问题,请参考以下文章

selenium grid的使用与配置

Selenium Grid,如何将 WebDriver 与 ThreadSafeSeleniumSessionStorage.session() 结合使用

如何使用Selenium-Grid

如何使用Selenium-Grid

Selenium-Grid2 配置RemoteWebDriver

Selenium grid 分布式测试搭建