2014-06-20 64 views
-2

我使用selenium webdriver通過在excel工作表中使用Linkedin的高級搜索來輸出前三條記錄,但是我沒有得到'name'和'description'字段的所有值一。請看看這個從selenium webdriver輸出值到excel表格

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

您是否只是在公共討論網站上發佈您的實際密碼? – SiKing

+0

不,不,這不是實際的密碼:) – testing

+0

代碼沒有格式化。嘗試張貼格式化的代碼,以便可讀性更好:) – Sighil

回答

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),以便每個名稱指定對將被添加到新行。

讓我知道這是否對您有幫助

+0

非常感謝幫助哥們。我得到的名稱,但不是名稱。此外,這些名稱不在同一列。 – testing

+0

嗨,我可以通過編寫名稱 - >(0,j)和指定 - >(1,j)來成功完成此操作。謝謝@lost .. :) – testing

+0

對不起!我的錯 ... – Sighil

相關問題