Playwright Java – Basic Level – Multiple Choice Questions and Answers – Locators & Actions

HOME


a) page.findButton("Login")

b) page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Login"))

c) page.locateButton("Login")

d) page.getButton("Login")

a)  page.getByText("Welcome")

b) page.getByVisible("Welcome")

c) page.findText("Welcome")

d) page.textLocator("Welcome")


a)  page.getByLabel("Username")

b) page.getByInput("Username")

c) page.findByLabel("Username")

d) page.locatorLabel("Username")

a) page.getByHint("Enter email")

b) page.getByPlaceholder("Enter email")

c) page.getByInputText("Enter email")

d) page.findPlaceholder("Enter email")





a) page.getByRole(
    AriaRole.BUTTON,
    new Page.GetByRoleOptions()
        .setName("Save")
        .setExact(true)
);
b) page.getByRole(AriaRole.BUTTON)
    .exact("Save");
c) page.locator("button")
    .setExactText("Save");
d) page.getByText("Save")
    .setRole(AriaRole.BUTTON);

a) locator.search()

b) locator.where()

c) locator.filter()

d) locator.refine()

a) page.locatorById()

b) page.findTestId()

c) page.getByTestId()

d) page.testId()


<div class="user">
    <span class="name">John</span>
    <button>Edit</button>
</div>
a) page.locator(".user").locator("button").click();

b) page.locator(".user button").click();

a) page.getByRole(AriaRole.LISTITEM)
    .filter(new Locator.FilterOptions()
        .setHas(
            page.getByRole(
                AriaRole.HEADING,
                new Page.GetByRoleOptions().setName("Product 2")
            )
        ));
b) page.getByRole(AriaRole.LISTITEM)
    .getParent("Product 2");
c) page.getByText("Product 2")
    .parent();
d) page.locator("Product 2")
    .closest("listitem");

a) page.getByRole(AriaRole.BUTTON)
    .or(page.getByTitle("Subscribe"));
b) page.getByRole(AriaRole.BUTTON)
    .and(page.getByTitle("Subscribe"));
c) page.getByRole(AriaRole.BUTTON)
    .filter("Subscribe");
d) page.getByTitle("Subscribe")
    .contains(AriaRole.BUTTON);






a) selectOption("Java", "Python");

b) selectOptions("Java", "Python");

c) selectOption(new String[]{"java", "python"});

d) multiSelect("java", "python");


Playwright Java – Basic Level – Multiple Choice Questions and Answers – MCQ1

HOME

























Retrieve Border Color with Selenium in Java

HOME

org.openqa.selenium.support.Color.

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.support.Color;

import java.time.Duration;

public class Border_Example {

    public static void main(String args[]) {

        ChromeOptions chromeOptions = new ChromeOptions();
        WebDriver driver = new ChromeDriver(chromeOptions);
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
        driver.manage().window().maximize();

        try {
            driver.get("https://www.tutorialspoint.com/selenium/practice/login.php");

            // identify the element
            WebElement nameBox = driver.findElement(By.xpath("//*[@id='email']"));

            // get element border color in rgb format
            String nameBoxBorderColor = nameBox.getCssValue("border-color");
            System.out.println("RGB code for border color: " + nameBoxBorderColor);

            // convert rgb to hex using Color class
            String hexColor = Color.fromString(nameBoxBorderColor).asHex();
            System.out.println("Hex format for element Border-Color is: " + hexColor);

            // convert rgb to rgba using Color class
            String rgbaColor = Color.fromString(nameBoxBorderColor).asRgba();
            System.out.println("RGBA format for element Border-Color is: " + rgbaColor);

            // Retrieve the border color value for each side
            String borderTopColor = nameBox.getCssValue("border-top-color");
            String borderRightColor = nameBox.getCssValue("border-right-color");
            String borderBottomColor = nameBox.getCssValue("border-bottom-color");
            String borderLeftColor = nameBox.getCssValue("border-left-color");

            // Print the retrieved border colors
            System.out.println("Border Top Color: " + borderTopColor);
            System.out.println("Border Right Color: " + borderRightColor);
            System.out.println("Border Bottom Color: " + borderBottomColor);
            System.out.println("Border Left Color: " + borderLeftColor);

        } finally {
            // Closing browser
            driver.quit();
        }
    }
}

ChromeOptions chromeOptions = new ChromeOptions();
WebDriver driver = new ChromeDriver(chromeOptions);
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
driver.manage().window().maximize();
https://www.tutorialspoint.com/selenium/practice/login.php
WebElement nameBox = driver.findElement(By.xpath("//*[@id='email']"));
 // get element border color in rgb format
String nameBoxBorderColor = nameBox.getCssValue("border-color");
System.out.println("RGB code for border color: " + nameBoxBorderColor);

// convert rgb to hex using Color class
String hexColor = Color.fromString(nameBoxBorderColor).asHex();
System.out.println("Hex format for element Border-Color is: " + hexColor);

// convert rgb to rgba using Color class
String rgbaColor = Color.fromString(nameBoxBorderColor).asRgba();
System.out.println("RGBA format for element Border-Color is: " + rgbaColor);
String borderTopColor = nameBox.getCssValue("border-top-color");
String borderRightColor = nameBox.getCssValue("border-right-color");
String borderBottomColor = nameBox.getCssValue("border-bottom-color");
String borderLeftColor = nameBox.getCssValue("border-left-color");
// Close the browser
driver.quit();

DW Testing – Basic Level – Multiple Choice Questions and Answers – MCQ1

HOME





















CI/CD – Advance Level – Multiple Choice Questions and Answers – MCQ1

HOME





















CI/CD – Intermediate Level – Multiple Choice Questions and Answers – MCQ1

HOME





















CI/CD – Basic Level – Multiple Choice Questions and Answers – MCQ1

HOME





















Mastering Query Parameters in Playwright Java API Tests

HOME

https://jsonplaceholder.typicode.com/comments?postId=1

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>Playwright_API_Demo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>Playwright_API_Demo</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <playwright.version>1.57.0</playwright.version>
    <testng.version>7.11.0</testng.version>
    <maven.compiler.plugin.version>3.15.0</maven.compiler.plugin.version>
    <maven.compiler.source.version>17</maven.compiler.source.version>
    <maven.compiler.target.version>17</maven.compiler.target.version>
    <maven.surefire.plugin.version>3.5.4</maven.surefire.plugin.version>
  </properties>

  <dependencies>

    <!-- Playwright -->
    <dependency>
      <groupId>com.microsoft.playwright</groupId>
      <artifactId>playwright</artifactId>
      <version>${playwright.version}</version>
    </dependency>

    <!-- TestNG -->
    <dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <version>${testng.version}</version>
      <scope>test</scope>
    </dependency>

  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>${maven.compiler.plugin.version}</version>
        <configuration>
          <source>${maven.compiler.source.version}</source>
          <target>${maven.compiler.target.version}</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${maven.surefire.plugin.version}</version>
        <configuration>
          <suiteXmlFiles>
            <suiteXmlFile>testng.xml</suiteXmlFile>
          </suiteXmlFiles>
        </configuration>
        <dependencies>
        </dependencies>
      </plugin>
    </plugins>
  </build>
</project>

 @BeforeMethod
    void setUp() {
        createPlaywright();
        createAPIRequestContext();
    }

 void createPlaywright() {
        playwright = Playwright.create();
    }

void createAPIRequestContext() {
        Map<String, String> headers = new HashMap<>();
        headers.put("Accept", "application/json");

        request = playwright.request().newContext(new APIRequest.NewContextOptions()
                .setBaseURL("https://jsonplaceholder.typicode.com")
                .setExtraHTTPHeaders(headers));
    }

  @AfterMethod
    void tearDown() {
        if (request != null) {
            request.dispose();
        }
        if (playwright != null) {
            playwright.close();
        }
    }

 @Test
    public void getCommentsByPostId() {

        // GET /comments?postId=1
        APIResponse response = request.get("/comments",
                RequestOptions.create().setQueryParam("postId", "1"));

        Assert.assertEquals(response.status(), 200, "Expected 200 for GET /comments?postId=1");

        String body = response.text();
        System.out.println("GET Response: " + body);

        Gson gson = new Gson();
        JsonObject[] posts = gson.fromJson(body, JsonObject[].class);

        Assert.assertTrue(posts.length > 0, "Expected at least one post for postId=1");
        Assert.assertEquals(posts[0].get("postId").getAsInt(), 1, "Expected postId=1 in first result");
        Assert.assertEquals(posts[0].get("id").getAsInt(), 1, "Expected id=1 in first result");
        Assert.assertEquals(posts[0].get("email").getAsString(), "Eliseo@gardner.biz", "Expected email is incorrect for first result" + posts[0].get("email").getAsString());
    }

APIResponse response = request.get("/comments",
                RequestOptions.create().setQueryParam("postId", "1"));
Assert.assertEquals(response.status(), 200, "Expected 200 for GET /comments?postId=1");
String body = response.text();
System.out.println("GET Response: " + body);
Gson gson = new Gson();
JsonObject[] posts = gson.fromJson(body, JsonObject[].class);
Assert.assertTrue(posts.length > 0, "Expected at least one post for postId=1");

Verifies that the `postId` in the first comment object is `1`.

Assert.assertEquals(posts[0].get("postId").getAsInt(), 1, "Expected postId=1 in first result");

mvn clean test

Testing REST APIs with Playwright in Java

HOME

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>Playwright_API_Demo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>Playwright_API_Demo</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <playwright.version>1.57.0</playwright.version>
    <testng.version>7.11.0</testng.version>
    <maven.compiler.plugin.version>3.15.0</maven.compiler.plugin.version>
    <maven.compiler.source.version>17</maven.compiler.source.version>
    <maven.compiler.target.version>17</maven.compiler.target.version>
    <maven.surefire.plugin.version>3.5.4</maven.surefire.plugin.version>
  </properties>

  <dependencies>

    <!-- Playwright -->
    <dependency>
      <groupId>com.microsoft.playwright</groupId>
      <artifactId>playwright</artifactId>
      <version>${playwright.version}</version>
    </dependency>

    <!-- TestNG -->
    <dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <version>${testng.version}</version>
      <scope>test</scope>
    </dependency>

  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>${maven.compiler.plugin.version}</version>
        <configuration>
          <source>${maven.compiler.source.version}</source>
          <target>${maven.compiler.target.version}</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${maven.surefire.plugin.version}</version>
        <configuration>
          <suiteXmlFiles>
            <suiteXmlFile>testng.xml</suiteXmlFile>
          </suiteXmlFiles>
        </configuration>
        <dependencies>
        </dependencies>
      </plugin>
    </plugins>
  </build>
</project>

 @BeforeMethod
    void setUp() {
        createPlaywright();
        createAPIRequestContext();
    }

 void createPlaywright() {
        playwright = Playwright.create();
    }

void createAPIRequestContext() {
        Map<String, String> headers = new HashMap<>();
        headers.put("Accept", "application/json");

        request = playwright.request().newContext(new APIRequest.NewContextOptions()
                .setBaseURL("https://jsonplaceholder.typicode.com")
                .setExtraHTTPHeaders(headers));
    }

  @AfterMethod
    void tearDown() {
        if (request != null) {
            request.dispose();
        }
        if (playwright != null) {
            playwright.close();
        }
    }

 @Test
    public void getUserById() {
        APIResponse response = request.get("/posts/1");
        System.out.println("GET Response :" + response.text());
        Assert.assertEquals(response.status(), 200, "Expected 200 for GET /posts/1");

        Gson gson = new Gson();
        JsonObject jsonResponse = gson.fromJson(response.text(), JsonObject.class);
        Assert.assertEquals(jsonResponse.get("userId").getAsInt(), 1, "Expected userId=1 in response body");
        Assert.assertEquals(jsonResponse.get("id").getAsInt(), 1, "Expected id=1 in response body");
    }

POST Request

{
    "title": "architect",
    "body": "post test",
    "userId": 100
}

 @Test
    public void createUser() {
        Map<String, Object> payload = new HashMap<>();
        payload.put("title", "architect");
        payload.put("body", "post test");
        payload.put("userId", 100);

        APIResponse response = request.post("/posts", RequestOptions.create().setData(payload));
        System.out.println("POST Response :" + response.text());
        Assert.assertEquals(response.status(), 201, "Expected 201 for POST /users");

        Gson gson = new Gson();
        JsonObject body = gson.fromJson(response.text(), JsonObject.class);
        Assert.assertEquals(body.get("title").getAsString(), "architect");
        Assert.assertEquals(body.get("body").getAsString(), "post test");
        Assert.assertEquals(body.get("userId").getAsInt(), 100);
        Assert.assertNotNull(body.get("id"), "Expected id in create response");
    }

{
    "id": 1, 
    "title": "business manager",
    "body": "Implementing DataWareHouse Migration Project",
    "userId": 50
}
 @Test
    public void updateUser() {

        APIResponse response = request.get("/posts/1");
        System.out.println("GET Response before PUT Request:" + response.text());
        Assert.assertEquals(response.status(), 200, "Expected 200 for GET /posts/1");


        Map<String, Object> payload = new HashMap<>();
        payload.put("id", 1);
        payload.put("title", "business manager");
        payload.put("body", "Implementing DataWareHouse Migration Project");
        payload.put("userId", 50);

        APIResponse response1 = request.put("/posts/1", RequestOptions.create().setData(payload));
        System.out.println("PUT Response :" + response1.text());
        Assert.assertEquals(response1.status(), 200, "Expected 200 for PUT /posts/1");

        Gson gson = new Gson();
        JsonObject body = gson.fromJson(response1.text(), JsonObject.class);
        Assert.assertEquals(body.get("title").getAsString(), "business manager");
        Assert.assertEquals(body.get("body").getAsString(), "Implementing DataWareHouse Migration Project");
        Assert.assertEquals(body.get("userId").getAsInt(), 50);
        Assert.assertNotNull(body.get("id"), "Expected id in create response");

    }

   @Test
    public void deleteUser() {
        APIResponse response = request.delete("/posts/1");
        System.out.println("DELETE Response :" + response.text());
        Assert.assertEquals(response.status(), 200, "Expected 200 for DELETE /posts/1");
    }

mvn clean test

How to Rerun Last Failed Playwright TypeScript Tests

HOME

npx playwright test --project webkit

import { test, expect } from '@playwright/test';

test('has title', async ({ page, browserName }) => {
  await page.goto('https://opensource-demo.orangehrmlive.com/');

  console.log(`Running test on browser: ${browserName}`);  // Print the browser name

  await page.waitForTimeout(3000); // Wait for 3 seconds

  // Expect a title "to contain" a substring.
  await expect(page).toHaveTitle(/OrangeHRM/);
});


test('login', async ({ page, browserName }) => {

  const username = 'Admin';
  const password = 'admin123'

  await page.goto('https://opensource-demo.orangehrmlive.com/');

  console.log(`Running test on browser: ${browserName}`);  // Print the browser name

  // Fill in the username
   await page.fill('input[name="username"]', username);
  
   // Print the username
  console.log(`Logging in with username: ${username}`);

  // Fill in the password
    await page.fill('input[name="password"]', password);

  // Print the password
  console.log(`Logging in with password: ${password}`);

  // Click the login button - Use XPath to locate and click the login button
  const loginButton = page.locator('//button[@type="submit" and contains(@class, "orangehrm-login-button")]');
  await loginButton.click();

  // Check if the page contains text Dashboard - Locate the element using XPath
  const dashboardElement = await page.locator('//h6[contains(@class, "oxd-topbar-header-breadcrumb-module")]');

  // Get the text content from the element
  const dashboardText = await dashboardElement.textContent();
  
  // Print the text
  console.log(`Dashboard text: ${dashboardText}`);
  
  expect(dashboardText).toContain('Dashboard1');
});

npx playwright test --last-failed