Dealing with forms in Selenium Webdriver

Dealing with forms

As you know from this post using a separate class for each web page element is a good practice. Working with forms I recommend you to follow this practice too. Let’s take a look how can you interact with web forms with Selenium Webdriver.

Creating the form class

The web form class should contain this properties:

  • form – for storing form WebElement object. It’s useful to have easy access to the form object.
  • submitButton – for storing submit button WebElement object. It’s useful too.
  • driver – for storing WebDriver object.

Check out the example below:

public class Form
    protected WebElement form;
    protected WebElement submitButton;
    protected WebDriver driver;
Set text input value

For this purpose I use  WebElement::sendKeys() method:

public void setInputValue(String inputName, String value)
Clearing the text input

One-line method using WebElement::clear() method:

public void clearFieldById(String id)
Toggling checkbox
public void toggleCheckbox(String inputName)
Changing dropdown select value

Setting select value by index, e.g. “Set the select’s option no. 2”

public void setSelectValue(String inputName, Integer index)
    Select dropdown = new Select(form.findElement(By.xpath("./descendant::select[@id=\""+inputName+"\"]")));

Setting select value by value, e.g. “Set the select’s option with value ‘someval’ ”

public void setSelectValueByValue(String inputName, String value)
    Select dropdown = new Select(form.findElement(By.xpath("./descendant::select[@id=\""+inputName+"\"]")));
Uploading files

The most tricky task in this article. There is no comprehensive way how to upload files with forms in any browser. Since I use Chrome Driver I’ll share you how doing that for the Chrome browser. The main idea is in passing the full path to a file in the upload method, copy it to clipboard, open file upload dialog window, paste the path there an click on upload button.

Include AWT package in the form class:

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.StringSelection;
import java.awt.event.KeyEvent;

Add upload method:

public void uploadFile(String path)
    throws AWTException

    Robot robot = new Robot();
    // Ctrl-V + Enter on Win


public static void setClipboard(String str) {
   StringSelection ss = new StringSelection(str);
   Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);

Check the example:

catch (AWTException e)
  //Upload failed
Submitting the form
public void submit(){;