Selenium Grid Java DevTools Network Interception Example

This selenium grid java DevTools example will intercept network events.

Example DevTools Network Intercept

public class test_dev_tools_network_intercept {

	private static WebDriver driver;


	//NOTE: find these credentials in your Gridlastic dashboard after launching your selenium grid (get a free account).
	public static String VIDEO_URL = System.getenv("VIDEO_URL"); //like https://s3-us-west-1.amazonaws.com/027a15f2-530d-31e5-f8cc-7ceaf6355377/239a51a9-c526-ceb8-9ffd-1759b782a464/play.html?
	public static String HUB_URL = System.getenv("HUB_URL"); // like "https://USERNAME:ACCESS_KEY@YOUR_SUBDOMAIN.gridlastic.com/wd/hub";


	public static void main(String[] args) throws Exception {


		// Example test environment. NOTE: Gridlastic auto scaling requires all
		// these 3 environment variables in each request.
		String platform_name = "win10"; // win10, linux
		String browser_version = "latest"; // like 99 or latest


		// chrome, MicrosoftEdge
		ChromeOptions options = new ChromeOptions();
		//EdgeOptions options = new EdgeOptions();			

		options.setCapability("browserVersion", browser_version); 
		options.setCapability("platformName", platform_name);

		// Enable video recording
		Map gridlasticOptions = new HashMap<>();
		gridlasticOptions.put("video", "true");
		options.setCapability("gridlastic:options", gridlasticOptions);

		// On Linux start-maximized does not expand browser window to max screen size. Always set a window size.
		if (platform_name.equalsIgnoreCase("linux")) {
			options.addArguments(Arrays.asList("--window-position=0,0"));
			options.addArguments(Arrays.asList("--window-size=1920,1080"));
		} else {
			options.addArguments(Arrays.asList("--start-maximized"));
		}


		ClientConfig config = ClientConfig.defaultConfig().readTimeout(Duration.ofMinutes(10));
		driver = RemoteWebDriver.builder().address(new URL(HUB_URL)).oneOf(options).config(config).build();

		// TEST test_dev_tools_network_interception
		SessionId sessionId = null;
		try {
			sessionId = ((RemoteWebDriver) driver).getSessionId();
			DevTools devTools = ((HasDevTools) driver).getDevTools();			
			devTools.createSession();
			Supplier message = () -> new ByteArrayInputStream("Creamy, delicious cheese!".getBytes(StandardCharsets.UTF_8));
			NetworkInterceptor interceptor = new NetworkInterceptor(
					driver,
					Route.matching(req -> true)
					.to(() -> req -> new HttpResponse()
							.setStatus(200)
							.addHeader("Content-Type", StandardCharsets.UTF_8.toString())
							.setContent(message)));
			driver.get("https://www.gridlastic.com");
			Thread.sleep(5000);	
			String source = driver.getPageSource();
			System.out.println(source);

			if (source.contains("delicious cheese!")) {
				System.out.println("success");
			} else {
				System.out.println("failure");
			}
			interceptor.close();					
			devTools.close();
			System.out.println("Test Video: " + VIDEO_URL + sessionId.toString());
			driver.quit();
		} catch (Exception e) {
			e.printStackTrace();
			driver.quit();
			System.out.println("Test Video: " + VIDEO_URL + sessionId.toString());
		}

		
	}
}