我使用selenium webdriver在excel表中使用Linkedin的高级搜索来输出前三个记录,但是除了一个之外我没有得到“名称”和“描述”字段的所有值。请看看这个
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();
}
}
答案 0 :(得分:0)
您正在创建一个新的Excel文件,通过在for循环中创建工作表来有效地覆盖前一个文件。
尝试修改代码的for循环部分,如下所示
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();
同样new Label (j,1,name)
表示数据一个接一个地添加到第一行。
您也可以更改new Label (j,i,name)
,以便将每个名称 - 名称对添加到新行。
如果这有助于你,请告诉我