├── .gitignore ├── .gitpod.yml ├── README.md ├── pom.xml └── src └── test └── com └── lambdatest └── CDPTestConsole.java /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class 3 | /target/ 4 | .vscode/ 5 | 6 | # Log file 7 | *.log 8 | 9 | # BlueJ files 10 | *.ctxt 11 | 12 | # Mobile Tools for Java (J2ME) 13 | .mtj.tmp/ 14 | 15 | # Package Files # 16 | *.jar 17 | *.war 18 | *.nar 19 | *.ear 20 | *.zip 21 | *.tar.gz 22 | *.rar 23 | 24 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 25 | hs_err_pid* 26 | -------------------------------------------------------------------------------- /.gitpod.yml: -------------------------------------------------------------------------------- 1 | # List the start up tasks. Learn more https://www.gitpod.io/docs/config-start-tasks/ 2 | tasks: 3 | - init: echo 'init script' # runs during prebuild 4 | command: mvn clean install exec:java -Dexec.mainClass="com.lambdatest.CDPTestConsole" -Dexec.classpathScope=test -e 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # How to use Chrome DevTools Protocol (CDP) for automation test in Java-selenium on LambdaTest 2 | ![Java](https://www.lambdatest.com/support/assets/images/og-images/Java-with-Selenium-1-1.jpg) 3 | 4 | ### Prerequisites 5 | 1. Install and set environment variable for java. 6 | * Windows - https://www.oracle.com/java/technologies/downloads/ 7 | * Linux - ``` sudo apt-get install openjdk-8-jre ``` 8 | * MacOS - Java should already be present on Mac OS X by default. 9 | 2 Install and set environment varibale for Maven. 10 | * Windows - https://maven.apache.org/install.html 11 | * Linux/ MacOS - [Homebrew](http://brew.sh/) (Easier) 12 | ``` 13 | install maven 14 | ``` 15 | ### To print CDP console log, the following code can be used: 16 | ```java 17 | DevTools devTools = ((HasDevTools) driver).getDevTools(); 18 | devTools.createSession(); 19 | 20 | devTools.send(Log.enable()); 21 | devTools.addListener(Log.entryAdded(), logEntry -> { 22 | System.out.println("text: " + logEntry.getText()); 23 | System.out.println("level: " + logEntry.getLevel()); 24 | status = true; 25 | }); 26 | ``` 27 | 28 | ### Run your First Test 29 | 1. Clone the Java-Selenium-Sample repository. 30 | ``` 31 | git clone https://github.com/LambdaTest/java-selenium-sample.git 32 | ``` 33 | 2. Next get into Java-Selenium-Sample folder, and import Lamabdatest Credentials. You can get these from lambdatest automation dashboard. 34 |

35 | For Linux/macOS:: 36 | 37 | ``` 38 | export LT_USERNAME="YOUR_USERNAME" 39 | export LT_ACCESS_KEY="YOUR ACCESS KEY" 40 | ``` 41 |

42 | For Windows: 43 | 44 | ``` 45 | set LT_USERNAME="YOUR_USERNAME" 46 | set LT_ACCESS_KEY="YOUR ACCESS KEY" 47 | ``` 48 | Step 3. You may also want to run the command below to check for outdated dependencies. Please be sure to verify and review updates before editing your pom.xml file as they may not be compatible with your code. 49 | ``` 50 | mvn versions:display-dependency-updates 51 | ``` 52 | Step 4. Run single test. 53 | ``` 54 | mvn clean install exec:java -Dexec.mainClass="com.lambdatest.CDPTestConsole" -Dexec.classpathScope=test -e 55 | ``` 56 | 57 | ## About LambdaTest 58 | 59 | [LambdaTest](https://www.lambdatest.com/) is a cloud based selenium grid infrastructure that can help you run automated cross browser compatibility tests on 2000+ different browser and operating system environments. LambdaTest supports all programming languages and frameworks that are supported with Selenium, and have easy integrations with all popular CI/CD platforms. It's a perfect solution to bring your [selenium automation testing](https://www.lambdatest.com/selenium-automation) to cloud based infrastructure that not only helps you increase your test coverage over multiple desktop and mobile browsers, but also allows you to cut down your test execution time by running tests on parallel. 60 | 61 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4.0.0 3 | java-selenium-sample 4 | java-selenium-sample 5 | 0.0.1 6 | 7 | src/test 8 | 9 | 10 | src/test 11 | 12 | **/*.java 13 | 14 | 15 | 16 | 17 | 18 | maven-compiler-plugin 19 | 3.7.0 20 | 21 | 10 22 | 23 | 24 | 25 | org.apache.maven.plugins 26 | maven-surefire-plugin 27 | 3.0.0-M5 28 | 29 | 30 | 31 | 32 | 33 | org.seleniumhq.selenium 34 | selenium-java 35 | 4.1.0 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /src/test/com/lambdatest/CDPTestConsole.java: -------------------------------------------------------------------------------- 1 | package com.lambdatest; 2 | 3 | import java.net.MalformedURLException; 4 | import java.net.URL; 5 | import java.util.HashMap; 6 | 7 | import org.openqa.selenium.JavascriptExecutor; 8 | import org.openqa.selenium.WebDriver; 9 | import org.openqa.selenium.devtools.DevTools; 10 | import org.openqa.selenium.devtools.HasDevTools; 11 | import org.openqa.selenium.devtools.v94.log.Log; 12 | import org.openqa.selenium.remote.Augmenter; 13 | import org.openqa.selenium.remote.DesiredCapabilities; 14 | import org.openqa.selenium.remote.RemoteWebDriver; 15 | 16 | 17 | public class CDPTestConsole { 18 | public static String hubURL = "https://hub.lambdatest.com/wd/hub"; 19 | static Boolean status = false; 20 | 21 | private WebDriver driver; 22 | 23 | public void setup() throws MalformedURLException { 24 | 25 | DesiredCapabilities capabilities = new DesiredCapabilities(); 26 | capabilities.setCapability("browserName", "Chrome"); 27 | capabilities.setCapability("browserVersion", "latest"); 28 | HashMap ltOptions = new HashMap(); 29 | ltOptions.put("user", System.getenv("LT_USERNAME")); 30 | ltOptions.put("accessKey", System.getenv("LT_ACCESS_KEY")); 31 | ltOptions.put("build", "Selenium 4"); 32 | ltOptions.put("name", this.getClass().getName()); 33 | ltOptions.put("platformName", "Windows 10"); 34 | ltOptions.put("seCdp", true); 35 | ltOptions.put("selenium_version", "4.0.0"); 36 | capabilities.setCapability("LT:Options", ltOptions); 37 | 38 | driver = new RemoteWebDriver(new URL(hubURL), capabilities); 39 | System.out.println(driver); 40 | } 41 | 42 | public void cdpTestConsole() throws InterruptedException { 43 | Augmenter augmenter = new Augmenter(); 44 | driver = augmenter.augment(driver); 45 | 46 | DevTools devTools = ((HasDevTools) driver).getDevTools(); 47 | devTools.createSession(); 48 | 49 | devTools.send(Log.enable()); 50 | devTools.addListener(Log.entryAdded(), logEntry -> { 51 | System.out.println("text: " + logEntry.getText()); 52 | System.out.println("level: " + logEntry.getLevel()); 53 | status = true; 54 | }); 55 | driver.get("http://the-internet.herokuapp.com/broken_images"); 56 | Thread.sleep(1000 * 10); 57 | if (status) { 58 | markStatus("passed", "Console logs enteries", driver); 59 | } else { 60 | markStatus("failed", "Did not found Console logs enteries", driver); 61 | } 62 | } 63 | 64 | public void tearDown() { 65 | try { 66 | driver.quit(); 67 | 68 | } catch ( 69 | 70 | Exception e) { 71 | markStatus("failed", "Got exception!", driver); 72 | e.printStackTrace(); 73 | driver.quit(); 74 | } 75 | } 76 | 77 | public static void markStatus(String status, String reason, WebDriver driver) { 78 | JavascriptExecutor jsExecute = (JavascriptExecutor) driver; 79 | jsExecute.executeScript("lambda-status=" + status); 80 | System.out.println(reason); 81 | } 82 | 83 | public static void main(String[] args) throws MalformedURLException, InterruptedException { 84 | CDPTestConsole test = new CDPTestConsole(); 85 | test.setup(); 86 | test.cdpTestConsole();; 87 | test.tearDown(); 88 | } 89 | } 90 | --------------------------------------------------------------------------------