以下是使用下拉列表打印所有页面的名称和含义列的链接
尝试构建以下脚本: 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++;
}
}
尝试并了解实现要求的方式。如果您有任何疑问,请询问。
答案 1 :(得分:0)
另一种迭代并选择所有Dropdown值的方法
Select dropdown= new Select(WebUIDriver.webDr.findElement(By.xpath("enter xpath")));
int noOfDropDownValues= dropdown.getOptions().size()-1;
for(int i=0;i<noOfDropDownValues;i++){
new Select(WebUIDriver.webDr.findElement(By.xpath("Enter Xpath']"))).selectByValue(String.valueOf(i));
}