10 Selenium Issues You Should Know How to Solve

Selenium is open source and used by a large chunk of the testing community for automated testing of web applications. But there is a stack of technologies (HTML5/jQuery/AJAX/AngularJS etc.) involve in designing a web page which brings up many challenges for software testers using Selenium. Hence, here we come with the ten essential Selenium Webdriver howtos to address many of these real-time issues.

With every howto, there is a piece of code given to demonstrate the usage. You can use the sample code right away in your projects. Not only will it accelerate your work but help you in discussing challenges of automated web application testing during interviews. However, if you are actively looking for a job change, then read these 35 Selenium interview questions to ramp up preparation.

Before you dive in further, we must tell you that the tips here will only provide a partial solution which you can reuse in your programs. So we assume you know the basics of Selenium Webdriver. However, if you are a little out of touch, then don’t mind going through the Selenium tutorial for beginners for a quick brush up.

Let’s now open up this post with a solution to one of the most common use cases – how to automate web tables in a web application.

It is about handling the web tables where we will show how to query a table to fetch data from its cells.

//Create the Firefox driver instance.
WebDriver ff = new FirefoxDriver();

//First, find the table on the web page.
WebElement table = ff.findElement(By.id(searchResultsGrid));

//Second, fetch all the row elements of the table.
List<WebElement> rowSet = table.findElements(By.tagName("tr"));

//Third, loop through the rows and get the data from their cells.
for (WebElement row : rowSet) {
 List<WebElement> cells = row.findElements(By.xpath("./*"));
 for (WebElement cell : cells) {
 //Continue checking.
 }
}

The above code was just a demo before we share rest of the useful Selenium tips. Please go through the below list to see the other pieces of Selenium Webdriver howtos.

Table of Index.

  1. How to use Selenium Webdriver to click Google search?
  2. What to do when the click doesn’t work in Selenium Webdriver?
  3. How to simulate mouseover in Selenium Webdriver?
  4. How to open a URL in the new tab with Selenium WebDriver?
  5. How to use Selenium Webdriver to extract data from the PDF files?
  6. How to get element by XPath using JavaScript in Selenium WebDriver?
  7. How to select the drop down option in Selenium Webdriver?
  8. How to select all the dropdown values using Selenium WebDriver?
  9. How to get all the child of an element using Webdriver?
  10. How to get the visible text of a page with Selenium Webdriver?

10 Selenium Issues You Should Know How to Solve.

10 Most Common Selenium Webdriver Howtos

10 Selenium Webdriver Howtos.

1- How to use Selenium Webdriver to click Google search?

Since Google optimizes their CSS and JS scripts, so you can’t purely rely on using them as locators. Moreover, it adds the search links dynamically on the result page. So you have to use a smart wait for the page to show all the results.

/*
 # Selenium Webdriver to click Google search and wait for the results.
 # ===================================================================
 */
public static void main(String[] args) {

    WebDriver ff = new FirefoxDriver();
    ff.get("http://www.google.com");
    WebElement search = ff.findElement(By.name("q"));
    search.sendKeys("Hello world!\n");
    search.submit();

    // Wait until Google finishes displaying the results.
    WebElement waitForResult = (new WebDriverWait(ff, 10))
              .until(ExpectedConditions.presenceOfElementLocated(By.id("resultStats")));

    List<WebElement> searches = ff.findElements(By.xpath("//*[@id='rso']//h3/a"));

    // Print all the links appeared in the search.
    for (WebElement lnk : searches)
    {
        System.out.println(lnk.getAttribute("href"));
    }
}

 

2- What to do when the click doesn’t work in Selenium Webdriver?

First of all, you need to check that the element you are clicking is present on the target page. Then, you can try using the below code.

ff.findElement(By.name("submit")).sendKeys(Keys.Return);
or
ff.findElement(By.name("submit")).sendKeys(Keys.Enter);

 

3- How to simulate mouseover in Selenium Webdriver?

Since it’s not realistic to achieve <mouse hover> in Selenium Webdriver but we can sequence all the actions in one go. It will give the same effect as mouseover would have.

Here is the three-line code you can use.

Actions action = new Actions(ff);
WebElement seq = ff.findElement(By.xpath("html/body/div[10]/ul/li[5]/a"));
action.moveToElement(seq).moveToElement(ff.findElement(By.xpath("/paste-expression"))).click().build().perform();

 

4- How to open a URL in the new tab with Selenium WebDriver?

Here is the Selenium Webdriver code snippet that will help in opening the new tab.

It’ll open the page in a new tab.

String newtab = Keys.chord(Keys.CONTROL,Keys.RETURN); 
ff.findElement(By.linkText("URL")).sendKeys(newtab);

If you wish to move to the new tab, then use the below code.

ArrayList<String> tablist = new ArrayList<String> (ff.getWindowHandles());
ff.switchTo().window(tablist.get(0));

 

💡 Recommended – Top 20 Selenium Webdriver Coding Tips for Beginners.

 

5- How to use Selenium Webdriver to extract data from the PDF files?

Probably, you’ve heard it many times that you need to check a page which loads the PDF.

Here is the code to verify the online PDF file. But you first need to download the Apache PDF library.

@Test
public void checkPDFpage() throws Exception {
    // Test page which loads pdf document.
    ff.get("http ... sample page loading pdf");
 
    URL nav = new URL(ff.getCurrentUrl());
    BufferedInputStream page = new BufferedInputStream(nav.openStream());
 
    PDDocument pdfdoc = null;
    try{
        pdfdoc = PDDocument.load(page);
        String result = new PDFTextStripper().getText(pdfdoc);
        System.out.println(result);
    }finally{
 
        if( pdfdoc != null )
        {
            pdfdoc.close();
        }//end of if
    }//finally
}//main

 

6- How to get element by XPath using JavaScript in Selenium WebDriver?

Here is an easy way to retrieve the XPath using JS. Just use the JS <document.evaluate> method to fetch the XPath.

function getElementByXpath(path) {
  return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
}

Next, you may have to call the above JavaScript function from the Webdriver code. So use the <JavascriptExecutor> as given below.

WebDriver ff = new FirefoxDriver();
if (ff instanceof JavascriptExecutor) {
    ((JavascriptExecutor) ff).executeScript("getElementByXpath('//xpath')");
}

 

7- How to select the drop down option in Selenium Webdriver?

Use the following Webdriver code. It’ll help in selecting the options based on the label.

Select sel = new Select(ff.findElement(By.xpath("//path_to_drop_down")));
sel.deselectAll();
sel.selectByVisibleText("myvalue");

Also, you can add the below code to get the first selected value.

WebElement selection = sel.getFirstSelectedOption();

 

8- How to select all the dropdown values using Selenium WebDriver?

Here is the code to select all values from the drop down.

WebElement sel = ff.findElement(By.id("month"));
List<WebElement> items = sel.findElements(By.tagName("option"));

for (WebElement item : items) {
       item.click();
}

 

9- How to get all the child of an element using Webdriver?

You can query all the child of an element in Selenium Webdriver by using both the XPath and the CSS.

List<WebElement> nodes = targetElement.findElements(By.xpath(".//*"));

Or

List<WebElement> nodes = targetElement.findElements(By.cssSelector("*"));

 

10- How to get the visible text of a page with Selenium Webdriver?

You need to run through the following steps to get the visible text.

  • Call <By.tagName(“body”)> to select the top element in the DOM.
  • Next, use the <getText()> methods on the same element. It will return the desired visible text.

 

Summary – 10 Selenium Webdriver Howtos.

You might have observed that merely reading Selenium Webdriver tutorials isn’t going to turn us into an automation geek. There are a no. of other technical things which matter and we should know as automation testers.

But most of the tutorials miss on addressing such common problems. Hence, we did a trial, researched, and rinsed the ten problems that many automation testers encounter in their work. And finally, this post on ten Selenium Webdriver howtos came through.

If you have any questions about the Selenium Webdriver howtos, then please feel free to ask them. Also, if you want to share some of yours, then let us know. We’ll get them added to this post and mention your reference there.

Keep Learning,

TechBeamers.