【问题标题】:How to select all list options from drop downlist loop through them selcet each option and click submit button using selenium webdriver如何从下拉列表循环中选择所有列表选项选择每个选项并使用 selenium webdriver 单击提交按钮
【发布时间】:2018-08-30 00:04:47
【问题描述】:

这是使用下拉菜单打印所有页面的名称和含义列的链接

尝试构建以下脚本: 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 多页。

提前致谢。

【问题讨论】:

  • 这看起来有点像家庭作业。您尝试过什么,具体什么不起作用?请举例说明您尝试过的方法

标签: java selenium selenium-webdriver


【解决方案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++;
    }
}

尝试并了解实现要求的方式。如果您有任何疑问,请询问。

【讨论】:

  • 很高兴能帮上忙 :)
【解决方案2】:

另一种迭代和选择所有下拉值的方法

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));
}

【讨论】:

    猜你喜欢
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多