2014-02-05 27 views
0

下面是使用下拉如何通過他們選擇從下拉downlist循環中的所有選項列表selcet每個選項,並單擊使用硒的webdriver

嘗試構建腳本打印所有頁面的名稱和含義列中的鏈接提交按鈕如下所示: 1.轉到http://babynames.merschat.com/index.cgi?function=Search&origin=Sanskrit&gender=f 2.將名稱和含義列打印到syso。

我能夠打印第1頁,因爲它是默認頁面。 下面是代碼:

公共類BabyNamesAndMeanings {

WebDriver driver = new FirefoxDriver(); 

@BeforeClass 
public void setUp() { 
    driver.get("http://babynames.merschat.com/index.cgi?function=Search&origin=Sanskrit&gender=f"); 
    driver.manage().window().maximize(); 
} 

@Test 
public void printBabyNamesAndMeaningsOfFirstPage() { 
    WebElement baby_names = driver 
      .findElement(By 
        .xpath("//tbody/tr[7]/td[3]/table[2]/tbody/tr[2]/td[2]/font/table[1]/tbody")); 

    List<WebElement> names = baby_names.findElements(By 
      .xpath("//tr/td[1]/font/a")); 
    List<WebElement> meanings = baby_names.findElements(By 
      .xpath("//tr/td[4]/font/a")); 

    for (int i = 0; i < names.size(); i++) { 

     System.out.println("Name: " + names.get(i).getText() 
       + " Meaning: " + meanings.get(i).getText()); 
    } 

} 

我不知道如何通過在下拉列表中的選項其餘環在頁面的底部,並點擊提交按鈕打印所有頁面的名稱和含義。 共有100多頁。

在此先感謝。

+0

這看起來很像作業。你有什麼嘗試,什麼具體不工作?請給出你試過的例子 –

回答

1

下面的代碼將完成您的工作。

driver.get("http://babynames.merschat.com/index.cgi?function=Search&origin=Sanskrit&gender=f"); 
List<WebElement> pageOptions = new Select(driver.findElement(By.xpath("//select[@name='page']"))).getOptions();//Get all options in dropdown 
ArrayList<String> pageDd = new ArrayList<String>(); 
for(WebElement eachPage:pageOptions){ 
    pageDd.add(eachPage.getText());//Save text of each option 
} 
int i=1; 
for(String eachVal:pageDd){ 
    new Select(driver.findElement(By.xpath("//select[@name='page']"))).selectByVisibleText(eachVal);//Select page 
    driver.findElement(By.xpath("//input[@value='Go']")).click();//Click on go 
    List<WebElement> names = driver.findElements(By.xpath("//a[contains(@title,' meanings and popularity')]"));//Get all names on page 
    for(WebElement eachName:names){ 
     String name = eachName.getText(); //Get each name's text 
     WebElement mean = eachName.findElement(By.xpath("./../../..//a[contains(@title,'Names for baby with meanings like ')]"));//Get meaning for that name 
     String meaning = mean.getText();//Get text of meaning 
     System.out.println(i+") Name: " +name+ " Meaning: " + meaning);//Print the data 
     i++; 
    } 
} 

嘗試並理解實現方式的要求。如果你有任何疑問問。

+0

謝謝Husam。有效。 – user3195193

+0

高興得到了幫助:) – Husam

相關問題