This post explains the questions on understanding how web elements are identified by Selenium WebDriver.This covers findElement, findElements, various locators and profiling using WebDriver.
Question 1: What is the method used to launch URL using Selenium WebDriver?
Answer: In Firefox, we
can set the homepage as the required URL as shown in the code below. This will
launch the URL set in homepage on launching the driver.
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.startup.homepage","http://www.google.com");
//We will provide the
profile used as argument for Firefox Driver.
WebDriver driver = new FirefoxDriver(profile);
In case, we do not want to use profile, we can use the
get method to launch the URL.
WebDriver driver = new FirefoxDriver();
driver.get("https://www.google.com");
Question 2: What is the difference between findElement and findelements method in Selenium?
Answer: To locate an element in
the page, we use findElement method whereas findElements gives the collection
of web elements in the Page.
Syntax for findElement
is:
WebElement
tableinfo = driver.findElement(By.className("tableClsName"));
This will give the first element in
the page with className as “tableClsName”. Now once the element is recognized, we
can perform action on the WebElement. Suppose the element is a button, we
can click on the button as shown below:
Tableinfo.click();
Suppose the WebElement is an input box,
we can insert data in the input box as shown below:
Tableinfo.SendKeys(“This is a test”);
Syntax for findElements
is:
List<WebElement> tabledata = tableinfo.findElements(By.tagName("td"));
This will give collection of all elements
in the page with className as “td”.
We can further work on the collection
of the object and extract the required information or perform actions on the
required webElement as shown below:
List<WebElement> tabledata = tableinfo.findElements(By.tagName("td"));
for (int iCnt = 0;i<tabledata.size();iCnt++)
{
String strData = tabledata.get(iCnt).getText() ;
If(strData.contentEquals(“this is the row”))
{
System.out.println(“Web Element Found”)
iCnt = tabledata.size()-1;
}
}
Question 3: What are the value ways to identify an object in Selenium WebDriver?
Answer: Below are the various locators by which elements can
be identified in Selenium WebDriver:
1. Id: Identifies WebElement by the ‘Id’ attribute.
2. ClassName: Identifies webelement by the ‘class’
attribute.
3. cssSelector: Identifies element based on
the css of the webElement.
4. linkText: Identifies element by the actual text of the link. Text should match exactly with the link text.
5. Name: Identifies webelement by the ‘name’
attribute.
6. partiallinkText: Identifies element by the
actual text of the link. The link is identified on partial match of text.
7. tagName: Identifies an object by the tagName of
the webElement.
8. xpath: Identifies an object by the xpath of the
object.
Question 4: Below is a picture of google Page, how can we identify the inputbox for search using the various locators identifier?
Input box object identification |
Answer: The WebElement can be identified by different
locators as shown below:
1. Id: WebElement
Elem = driver.findElement(By.id(“gbqfq”));
2. ClassName: WebElement Elem =
driver.findElement(By.className(“gbqfif”);
3. cssSelector: WebElement Elem =
driver.findElement(By.cssSelector(“input#gbqfq”);
4. linkText: Not Applicable as the element is an input box
5. Name: WebElement Elem =
driver.findElement(By.Name(“q”);
6. partiallinkText: Not
Applicable as the element is an input box
7. tagName: WebElement
Elem = driver.findElement(By.tagName(“input”);
8. xpath: WebElement
Elem = driver.findElement(By.xpath(“//input[@className = ‘gbqfif’]”);
Question 5: I want to identify the title of the page is displayed properly. What will be the code to verify this?
Answer: Using driver.getTitle, we can get the title of the
current Page.