Retrieve Web Form Elements with WebDriver in Java

Q

How to Retrieve Web Page Form Elements with Selenium WebDriver in Java?

✍: FYIcenter.com

A

If a Web page is part of a Web application, it will most likely have an HTML form to allow users to enter and process data. This tutorial shows you how to Retrieve a Web page form and its elements with Selenium WebDriver.

Several methods from Selenium WebDriver classes will be used:

  • driver.get() - Loads a new Web page from the given URL in the current browser window. This is done using an HTTP GET operation, and the method will block until the load is complete.
  • driver.findElement() - Searches and returns the first HTML element that matches the given criteria.
  • By.tagName() - Returns a match criteria to search for HTML elements.
  • element.getAttribute() - Returns the value of the given attribute of this element.

1. Enter the following program, FormElement.java:

C:\fyicenter> type FormElement.java 

// FormElement.java
// Copyright (c) FYIcenter.com 
import org.openqa.selenium.*;
public class FormElement {
   public static void main(String[] args) {
      WebDriver driver = WebDriverLoader.load(args[0]);
      driver.get("http://sqa.fyicenter.com");

	  // get the first "form" element in the page.
      WebElement form = driver.findElement(By.tagName("form"));
	  String action = form.getAttribute("action");
	  String method = form.getAttribute("method");
      System.out.println("Test Case - Review FORM elements:");
      System.out.println("   <form action="+action+" method="+method+">"); 
	  
	  // get all "input" elements in the "form"
	  java.util.List<WebElement> list = form.findElements(By.tagName("input"));
      for (WebElement input: list) {
		  String type = input.getAttribute("type");
		  String name = input.getAttribute("name");
		  String value = input.getAttribute("value");
		  String size = input.getAttribute("size");
		  String src = input.getAttribute("src");
		  String alt = input.getAttribute("alt");
          System.out.println("      <input type="+type+" name="+name+" value="+value
		     +" size="+size+" src="+src+" alt="+alt+">"); 
      }

      System.out.println("   </form>"); 
      driver.quit();
   }
}

2. Compile and run it with the Selenium Client JAR file.

C:\fyicenter> javac -classpath \
   .;\fyicenter\selenium\java\client-combined-3.141.59.jar \
   FormElement.java

C:\fyicenter> java -classpath \
   .;\fyicenter\selenium\java\client-combined-3.141.59.jar;\
   \fyicenter\selenium\java\libs\guava-25.0-jre.jar;\
   \fyicenter\selenium\java\libs\okhttp-3.11.0.jar;\
   \fyicenter\selenium\java\libs\okio-1.14.0.jar;\
   \fyicenter\selenium\java\libs\commons-exec-1.3.jar \
   FormElement Chrome
Starting ChromeDriver 75.0.3770.90 (a6dcaf7e...-refs/branch-heads/3770@{#1003}) on port 30996
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
2:33:13 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
Test Case - Review FORM elements:
   <form action=http://sqa.fyicenter.com/index.php method=get>
      <input type=text name=Q value= size=28 src= alt=>
      <input type=image name= value= size=20 
	     src=http://sqa.fyicenter.com/_search.png alt=Submit>
   </form>

C:\fyicenter> java -classpath \
   .;\fyicenter\selenium\java\client-combined-3.141.59.jar;\
   \fyicenter\selenium\java\libs\guava-25.0-jre.jar;\
   \fyicenter\selenium\java\libs\okhttp-3.11.0.jar;\
   \fyicenter\selenium\java\libs\okio-1.14.0.jar;\
   \fyicenter\selenium\java\libs\commons-exec-1.3.jar \
   FormElement Edge
[13:19:24.086] - Listening on http://localhost:17592/
1:19:25 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
Test Case - Review FORM elements:
   <form action=http://sqa.fyicenter.com/index.php method=get>
      <input type=text name=Q value= size=28 src= alt=>
      <input type=image name= value= size=20 
	     src=http://sqa.fyicenter.com/_search.png alt=Submit>
   </form>
[13:19:26.655] - Stopping server.

As you can see, we are able to retrieve the FORM element and its INPUT sub-elements without any problem.

 

Submit Web Form with WebDriver in Java

Retrieve Web Page Title with WebDriver in Java

Using Selenium WebDriver Client Java API

⇑⇑ Selenium Tutorials

2020-01-04, 331👍, 0💬