I am using selenium webdriver to output first three records by using the Advanced Search of Linkedin in an excel sheet however I am not getting all the values of 'name' and 'description' fields except one. Please look into this
public void testExport() throws Exception {
driver.get(baseUrl + "/");
driver.findElement(By.id("session_key-login")).clear();
driver.findElement(By.id("session_key-login")).sendKeys("#####");
driver.findElement(By.id("session_password-login")).clear();
driver.findElement(By.id("session_password-login")).sendKeys("#####");
Thread.sleep(1000);
driver.findElement(By.xpath("//input[@value='Sign In']")).click();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.findElement(By.id("advanced-search")).click();
driver.findElement(By.id("adv-O-N-ffs")).click();
new Select(driver.findElement(By.id("advscountryCode"))).selectByVisibleText("United States");
driver.findElement(By.xpath(".//*[@id='adv-facet-CC']/fieldset/legend")).click();
Thread.sleep(1000);
driver.findElement(By.xpath(".//*[@id='adv-facet-CC']/fieldset/div/div/div/button")).click();
Thread.sleep(1000);
driver.findElement(By.xpath(".//*[@id='adv-facet-CC']/fieldset/div/div/input")).sendKeys("Leadmd");
Thread.sleep(1000);
driver.findElement(By.xpath(".//*[@id='pagekey-voltron_federated_search_internal_jsp']/div[1]/div/div[2]/ul/li[1]/img")).click();
Thread.sleep(1000);
driver.findElement(By.xpath(".//*[@id='adv-facet-CC']/fieldset/div/div/div/button")).click();
Thread.sleep(1000);
driver.findElement(By.xpath(".//*[@id='adv-facet-CC']/fieldset/div/div/input")).sendKeys("cloudwords");
Thread.sleep(1000);
driver.findElement(By.xpath(".//*[@id='pagekey-voltron_federated_search_internal_jsp']/div[1]/div/div[2]/ul/li[1]/img")).click();
Thread.sleep(1000);
driver.findElement(By.xpath(".//*[@id='adv-facet-CC']/fieldset/div/div/div/button")).click();
Thread.sleep(1000);
driver.findElement(By.xpath(".//*[@id='adv-facet-CC']/fieldset/div/div/input")).sendKeys("Grazitti");
Thread.sleep(1000);
driver.findElement(By.xpath(".//*[@id='pagekey-voltron_federated_search_internal_jsp']/div[1]/div/div[2]/ul/li[1]/img")).click();
Thread.sleep(1000);
driver.findElement(By.id("advs-title")).sendKeys("Marketing");
driver.findElement(By.name("submit")).click();
Thread.sleep(1000);
String name, designation;
for(int i = 0; i < 3; i++) {
int j = i + 1 ;
name = driver.findElement(By.xpath(".//*[@id='results']/li["+j+"]/div/h3/a")).getText();
System.out.println("data1 = " + name);
designation = driver.findElement(By.xpath(".//*[@id='results']/li["+j+"]/div/p")).getText();
System.out.println("data2 = " + designation);
File fExcel = new File("C:\\Users\\Master\\Desktop\\new.xls");
WritableWorkbook writableBook = Workbook.createWorkbook(fExcel);
writableBook.createSheet("Data", 0);
WritableSheet writableSheet = writableBook.getSheet(0);
Label data1 = new Label(j, 1, name);
writableSheet.addCell(data1);
Label data2 = new Label(j, 1, designation);
writableSheet.addCell(data2);
writableBook.write();
writableBook.close();
}
}
You are creating a new Excel file effectively overwriting the previous one by creating the sheet inside the for loop.
Try modifying the for loop part of your code as below
File fExcel = new File("C:\\Users\\Master\\Desktop\\new.xls");
WritableWorkbook writableBook = Workbook.createWorkbook(fExcel);
writableBook.createSheet("Data", 0);
WritableSheet writableSheet = writableBook.getSheet(0);
for(int i = 0; i < 3; i++) {
int j = i + 1 ;
name = driver.findElement(By.xpath(".//*[@id='results']/li["+j+"]/div/h3/a")).getText();
System.out.println("data1 = " + name);
designation = driver.findElement(By.xpath(".//*[@id='results']/li["+j+"]/div/p")).getText();
System.out.println("data2 = " + designation);
Label data1 = new Label(j, i, name);
writableSheet.addCell(data1);
Label data2 = new Label(j, i, designation);
writableSheet.addCell(data2);
}
writableBook.write();
writableBook.close();
Also new Label (j,1,name)
means data is getting added to the first row one after other.
You may change it too new Label (j,i,name)
so that each name-designation pair will be added to a new row.
Let me know if this helps you