2

What I am trying to do is select multiple options from this example site while holding CTRL

http://www.htmlcodetutorial.com/forms/_SELECT_MULTIPLE.html

The multiple selection values would come from excel though, means if the excel rows has values as mushroom, onions and olives each on different rows (within same column) it will select only those values one by one within the page. The Excel file looks like this :

Excel File

And this is the code I got so far upto

package mineP;
import java.io.File;
import java.io.FileInputStream;
import java.util.List;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class Various {
 public static void main(String[] args) throws Exception{
 File src = new File("C:\\Users\\Documents\\myP2.xlsx");
 // Load file
 FileInputStream fis = new FileInputStream(src);
 // Load WB
 XSSFWorkbook wb = new XSSFWorkbook(fis);
 // Load Sheet
 XSSFSheet sh1 = wb.getSheetAt(0);
 String chromePath = "C:\\Users\\chromedriver.exe";
 System.setProperty("webdriver.chrome.driver", chromePath);
 WebDriver driver = new ChromeDriver();
 driver.manage().window().maximize();
 driver.get("http://www.htmlcodetutorial.com/forms/_SELECT_MULTIPLE.html");
 WebElement sel = driver.findElement(By.xpath("//select[@name='toppings']"));
 List<WebElement> alloptions = sel.findElements(By.xpath("//select[@name='toppings']//option"));
 for (WebElement option: alloptions) {
 String optTxt = option.getText();
 //System.out.println(optTxt);
 if (optTxt.contains(sh1.getRow(3).getCell(1).getStringCellValue())){
 option.click();
 }
 }
 }
}

What i am trying to do is as long as there is a value in excel it will loop through excel and the options within the website and keep on selecting all the options using CTRL whose text values are located in excel

Narendra Chandratre
2,8347 gold badges31 silver badges60 bronze badges
asked Mar 8, 2016 at 22:13

2 Answers 2

1

Following is the code:

 Actions ac = new Actions(driver);
 ac.keyDown(Keys.CONTROL);
 for (Row r : sheet) {
 Cell c = r.getCell(1);
 String execelValue = c.getStringCellValue();
 if (!execelValue.equalsIgnoreCase("Selection")) {
 element = driver.findElement(By.xpath("//option[@value='" + execelValue + "']"));
 element.click();
 }
 }
 ac.keyUp(Keys.CONTROL);

This code will take value from excel, and based on that it will select the option from the list.

answered Mar 9, 2016 at 10:56
1
  • @Ami has this resolved your question Commented Apr 14, 2016 at 10:13
0

@Ami - You are doing it in a complicated way I guess

Why don't you try to fetch all data you need like in the very simple example below?

public Object[][] signUpPage1FieldValidationData() throws Exception{
 Object[][] retObjArr=getTestData("<your .xls file name","<your tab name>", "<fields which you wanted to fetch>");
 return(retObjArr);
ECiurleo
2,0431 gold badge16 silver badges45 bronze badges
answered Jul 15, 2016 at 5:01

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.