月与年之间的迭代。硒+;JAVA

月与年之间的迭代。硒+;JAVA,java,loops,selenium,selenium-webdriver,Java,Loops,Selenium,Selenium Webdriver,我选择了月份和年份,我需要逐个搜索2016年的每个月,然后单击“查询”按钮,等待在页面上加载数据并拾取一些数据,然后转到下个月并持续重复该过程,直到2016年底 我曾想过使用列表和数组列表来实现这一点,但我会遇到性能问题 在本例中,您建议使用迭代器 如何逐个选择2016年的月份和年份? List<WebElement> meses = driver.findElements(By.id("sel_Mes")); Iterator<WebElement>

我选择了月份和年份,我需要逐个搜索2016年的每个月,然后单击“查询”按钮,等待在页面上加载数据并拾取一些数据,然后转到下个月并持续重复该过程,直到2016年底

我曾想过使用
列表和
数组列表来实现这一点,但我会遇到性能问题

在本例中,您建议使用
迭代器

如何逐个选择2016年的月份和年份?

List<WebElement> meses = driver.findElements(By.id("sel_Mes"));

        Iterator<WebElement> itr = meses.iterator();
        while(itr.hasNext()) {
            System.out.println(itr.next().getAttribute("value"));

        }
List meses=driver.findElements(By.id(“sel_Mes”);
迭代器itr=meses.Iterator();
while(itr.hasNext()){
System.out.println(itr.next().getAttribute(“value”);
}

List<String> mes = new ArrayList<String>();
        mes.add("Janeiro");
        mes.add("Fevereiro");
        mes.add("Março");
        mes.add("Abril");
        mes.add("Maio");
        mes.add("Junho");
        mes.add("Julho");
        mes.add("Agosto");
        mes.add("Setembro");
        mes.add("Outubro");
        mes.add("Novembro");
        mes.add("Dezembro");

        List<String> ano = new ArrayList<String>();
        ano.add("2016");
List mes=new ArrayList();
加上(“里约热内卢”);
添加(“Fevereiro”);
添加(“Março”);
添加(“Abril”);
添加(“Maio”);
加上(“骏豪”);
添加(“Julho”);
添加(“Agosto”);
添加(“Setembro”);
新增(“奥图布罗”);
新增(“Novenbro”);
添加(“Dezembro”);
List ano=新的ArrayList();
无需添加(“2016”);

试试这样的方法:

WebElement selectElementMes = driver.findElement(By.id("sel_Mes");
Select select_mes = new Select(selectElementMes);
List<WebElement> allMes = select_mes .getOptions();

WebElement selectElementAnos = driver.findElement(By.id("sel_Ano");
Select select_anos = new Select(selectElementAnos);
List<WebElement> allAnos = select_anos .getOptions();


Iterator<WebElement> itr_meses = allMes.iterator();
Iterator<WebElement> itr_ano = allAnos.iterator();

while(itr_ano.hasNext()) {
    while(itr_meses.hasNext()) {
        System.out.println(itr_ano.next().getAttribute("value") + " -> " + itr_meses.next().getAttribute("value"));
    }
}
WebElement selectElementMes=driver.findElement(By.id(“sel_-Mes”);
选择Select_mes=新选择(selectElementMes);
List allMes=选择_mes.getOptions();
WebElement selectElementAnos=driver.findElement(By.id(“sel_Ano”);
选择Select_anos=新选择(selectElementAnos);
List allAnos=选择_anos.getOptions();
迭代器itr_meses=allMes.Iterator();
迭代器itr_ano=allAnos.Iterator();
while(itr_ano.hasNext()){
while(itr_meses.hasNext()){
System.out.println(itr_ano.next().getAttribute(“值”)+“->”+itr_meses.next().getAttribute(“值”);
}
}
这应该打印如下内容:

2016年->里约热内卢

2016->Fevereiro


等等。

好吧,它有效吗?第一个解决方案看起来不错(通用且简洁)。试试看!@Tim是的,但由于我是编程的学徒,我无法开发逻辑部分,使其有效地密封2016年1月和2016年1月,我将如何做,在那之后,我将如何继续选择其他月份,直到12月到达?哦,我明白了。你将需要一个嵌套循环:循环中的循环。外部循环op可以在所有年份循环,而内部循环可以在所有月份循环。因此,如果您的第一个示例有效,只需在这些年份执行相同的操作,并为select获取一个迭代器。@Tim您介意发布一个示例,说明此代码的外观吗?我已经发布了一个答案(未经测试!)。希望这有助于Sexcellent,在这种情况下,他只打印默认情况下已选择的备忘录,2017年4月(月份和当前年份),我如何按顺序每月打印它们?请看第三个答案: