Skip to content

Instantly share code, notes, and snippets.

@sahajamit
Last active June 20, 2022 09:01
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save sahajamit/c2d6827736f2b267a8d08c41e559ad24 to your computer and use it in GitHub Desktop.
Save sahajamit/c2d6827736f2b267a8d08c41e559ad24 to your computer and use it in GitHub Desktop.
Capture WebSocket Network Calls with WebDriver
package com.sahajamit.selenium.ws;
import org.json.JSONObject;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.logging.LogEntries;
import org.openqa.selenium.logging.LogType;
import org.openqa.selenium.logging.LoggingPreferences;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.util.logging.Level;
/**
* Created by amitrawat on 23/9/17.
*/
public class CaptureWSMessages {
private static WebDriver driver;
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "/drivers/chromedriver");
LoggingPreferences loggingprefs = new LoggingPreferences();
loggingprefs.enable(LogType.PERFORMANCE, Level.ALL);
DesiredCapabilities cap = new DesiredCapabilities().chrome();
cap.setCapability(CapabilityType.LOGGING_PREFS, loggingprefs);
driver = new ChromeDriver(cap);
driver.navigate().to("https://web-demo.adaptivecluster.com/");
Thread.sleep(5000);
LogEntries logEntries = driver.manage().logs().get(LogType.PERFORMANCE);
driver.close();
driver.quit();
logEntries.forEach(entry->{
JSONObject messageJSON = new JSONObject(entry.getMessage());
String method = messageJSON.getJSONObject("message").getString("method");
if(method.equalsIgnoreCase("Network.webSocketFrameSent")){
System.out.println("Message Sent: " + messageJSON.getJSONObject("message").getJSONObject("params").getJSONObject("response").getString("payloadData"));
}else if(method.equalsIgnoreCase("Network.webSocketFrameReceived")){
System.out.println("Message Received: " + messageJSON.getJSONObject("message").getJSONObject("params").getJSONObject("response").getString("payloadData"));
}
});
}
}
@MosheMadula
Copy link

Hi gerardnorton, Im new to coding and have not learned javascript yet. How to do I translate the same thing to python for selenium without using any external web proxy library

@rodrigoslayertech
Copy link

@sahajamit
How to translate this to using in Python?

@thaboBD
Copy link

thaboBD commented Oct 7, 2021

@sahajamit
Would you be able to help me translate this into C#?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment