我想在使用窗口句柄时分割存储在字符串中的值

时间:2015-08-07 11:54:38

标签: java selenium-webdriver automation window-handles

这是我的代码

Set<String> winHandle = driver.getWindowHandles();
System.out.println(winHandle);

我想拆分winHandle。我打印winHandle时得到的值是这样的

[{0dd5d2e3-da7f-4a57-ad06-52c19336d3c6}, {a32fd7a5-040f-488f-8bc0-64d9a4496509}]

我想选择第二个值{a32fd7a5-040f-488f-8bc0-64d9a4496509}

2 个答案:

答案 0 :(得分:0)

假设您的问题是&#34;如何获得第二项&#34;你需要迭代元素,直到你得到你正在寻找的元素。

所以你的代码看起来像

Iterator<String> it = winHandle.iterator();
it.next();//read and ignore first element
String value = it.next();//read and store second element

如果您的问题更为通用,例如&#34;如何获取 last 元素&#34;你可以用

String last = null;
Iterator<String> it = winHandle.iterator();
while(it.hasNext()){
    last = it.next();
}
//when loop will end `last` will hold last element.

答案 1 :(得分:0)

方法driver.getWindowHandles()通常用于在浏览器的选项卡/窗口之间切换。如果您的问题是“如何切换到上次打开的选项卡/窗口”,您可以尝试以下代码:

Set<String> oldWindowsSet = driver.getWindowHandles();
//action that produce opening new tab/window (ex. webElement.click())
Set<String> newWindowsSet = driver.getWindowHandles();
newWindowsSet.removeAll(oldWindowsSet);
String newWindowHandle = newWindowsSet.iterator().next();
driver.switchTo().window(newWindowHandle);