0
for (String winHandle : driver.getWindowHandles()) 
{
    driver.switchTo().window(winHandle); 
}

Can we rewrite this using Lambda Expression?

Grzegorz Górkiewicz
  • 4,496
  • 4
  • 22
  • 38
vny uppara
  • 119
  • 6
  • Is it really required to execute `driver.switchTo()` again in every loop iteration? If not, you can simply use `driver.getWindowHandles().forEach(driver.switchTo()::window)` – Holger Feb 10 '17 at 17:38

2 Answers2

2

I would go for

driver.getWindowHandles().forEach(windowHandle -> {
    driver.switchTo().window(windowHandle);
});

which is equivalent to:

for(String windowHandle : driver.getWindowHandles()) {
    driver.switchTo().window(windowHandle);
}

forEach method calls can be used for Collections. You can go parallel with the usage of forEach together with parallelStream. Read further.

Community
  • 1
  • 1
Grzegorz Górkiewicz
  • 4,496
  • 4
  • 22
  • 38
0

You can do it like

driver.getWindowHandles().stream().forEach((i) -> {
     driver.switchTo().window(i);
});

or like

driver.getWindowHandles().parallelStream().forEachOrdered((i) -> {
     driver.switchTo().window(i);
});

Stream api offers other possibilities that can make your life easier.

mirzak
  • 1,043
  • 4
  • 15
  • 30