月与年之间的迭代。硒+;JAVA
我选择了月份和年份,我需要逐个搜索2016年的每个月,然后单击“查询”按钮,等待在页面上加载数据并拾取一些数据,然后转到下个月并持续重复该过程,直到2016年底 我曾想过使用月与年之间的迭代。硒+;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年的月份和年份?
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月(月份和当前年份),我如何按顺序每月打印它们?请看第三个答案: