从selenium webdriver到excel表的输出值

时间:2014-06-20 13:26:59

标签: selenium webdriver jxl

我使用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();               
    }
}

1 个答案:

答案 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),以便将每个名称 - 名称对添加到新行。

如果这有助于你,请告诉我