Monday 13 February 2023

Playwright: select a radio button

We can select a radio button either using check() or click() method.

 

Example

page.getByLabel("java").click();
page.getByLabel("go").check();

 

Find the below working application.

 


selectRadioButton.html
<!DOCTYPE html>
<html>

<body>

  <h1>User favorite language form</h1>

  <p>Select one of your favorite language and click on submit button</p>

  <form onsubmit="return false;">
      <input type="radio" id="java" name="my_fav_language" value="Java">
      <label for="java">Java</label><br>

      <input type="radio" id="go" name="my_fav_language" value="Go">
      <label for="go">Go</label><br>

      <input type="radio" id="python" name="my_fav_language" value="Python">
      <label for="python">Python</label><br><br>

    <input type="submit" value="submit" onclick="display()">
  </form>

  <p id="result"></p>

  <script>
    function display() {
      let result = document.getElementById("result");
      let selectedValue = document.querySelector('input[name="my_fav_language"]:checked').value;
      result.innerHTML = `<b>Your favourite language is :  ${selectedValue}</b>`
    }
  </script>

</body>

</html>

 

FileUtil.java

package com.sample.app.util;

import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class FileUtil {
  
  public static String resourceAsString(String resourceName) throws IOException {
    ClassLoader classLoader = FileUtil.class.getClassLoader();
    URL url = classLoader.getResource(resourceName);
    if (url == null) {
      return null;
    }

    URLConnection urlConnection = url.openConnection();

    urlConnection.setUseCaches(false);

    try (InputStreamReader inputStreamReader = new InputStreamReader(urlConnection.getInputStream())) {
      char[] buffer = new char[1048];
      StringBuilder builder = new StringBuilder();

      int count = -1;
      while ((count = inputStreamReader.read(buffer, 0, buffer.length)) != -1) {
        builder.append(buffer, 0, count);
      }

      return builder.toString();
    }

  }
}

SelectRadioButton.java

package com.sample.app.actions;

import java.io.File;
import java.io.IOException;
import java.util.concurrent.TimeUnit;

import com.microsoft.playwright.Browser;
import com.microsoft.playwright.BrowserType;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.Playwright;
import com.sample.app.util.FileUtil;

public class SelectRadioButton {

  public static void main(String[] args) throws IOException, InterruptedException {
    try (Playwright playwright = Playwright.create()) {
      Browser browser = playwright.chromium()
          .launch(new BrowserType.LaunchOptions().setHeadless(false).setSlowMo(100));
      final String content = FileUtil.resourceAsString("actions" + File.separator + "selectRadioButton.html");

      Page page = browser.newPage();
      page.setContent(content);

      System.out.println("Selecting Java langauge");
      page.getByLabel("java").click();
      System.out.println("Is Java langauge checked : " + page.getByLabel("java").isChecked());
      System.out.println("Is Go langauge checked : " + page.getByLabel("go").isChecked());
      System.out.println("Is Python language checked : " + page.getByLabel("python").isChecked());
      TimeUnit.SECONDS.sleep(2);

      System.out.println("\nSelecting Go langauge");
      page.getByLabel("go").check();
      System.out.println("Is Java langauge checked : " + page.getByLabel("java").isChecked());
      System.out.println("Is Go langauge checked : " + page.getByLabel("go").isChecked());
      System.out.println("Is Python language checked : " + page.getByLabel("python").isChecked());
      TimeUnit.SECONDS.sleep(2);

    }
  }

}

Output

Selecting Java langauge
Is Java langauge checked : true
Is Go langauge checked : false
Is Python language checked : false

Selecting Go langauge
Is Java langauge checked : false
Is Go langauge checked : true
Is Python language checked : false



 

Previous                                                 Next                                                 Home

No comments:

Post a Comment