On the http://www.freecrm.com login page, the structure is such that the username, password, and the login button are contained inside the form with id=xyz. In such a situation, the child elements can be accessed using findElements on the container or parent element.
The following code displays the number of input elements in the form:
public class DynamicText1 { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "C:\\SeleniumWD\\src\\main\\resources\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); driver.get("http://www.freecrm.com"); String dynamicXpath = "http://*[@id='loginForm']"; List<WebElement> elem = driver.findElements(By.xpath(dynamicXpath)); List<WebElement> elem1 = elem.get(0).findElements(By.tagName("input")); System.out.println("no of elements: " + elem1.size()); } }
The output displayed in console is shown below no of elements: 3
This is a very simple program which has hardcoded values. To remove hardcoding from a program, we require a framework, which we will discuss in forthcoming chapters.