在一个应用程序中,有一个子窗口,该子窗口打开了另一个窗口。总共有三个窗口。窗口句柄和每个窗口的标题都是动态的,它们在每个会话中都会改变。
因此,我存储了父窗口和第一个子窗口的句柄,然后调用了getWindowHandles方法,将所有句柄存储在一个集合中,删除了父窗口和第一个子窗口。该集中的其余窗口句柄将是第三个窗口句柄。
Set<String> windowHandles = uiDriver().getDriver().getWindowHandles();
windowHandles.remove(parentHandle);
windowHandles.remove(firstChildHanlde);
String thirdChildHandle = windowHandles.toString();
如果您能帮助我以更方便的方式获得子窗口句柄,那将有很大的帮助。
答案 0 :(得分:0)
有关处理窗口句柄的更通用方法,您可以在执行打开更多窗口的操作之前先获取窗口句柄的Set
,然后执行操作,然后再获取窗口句柄的Set
,然后从“之后” Set
中删除“之前” Set
。剩下的就是在操作过程中打开的窗口。
Set<String> beforeWindowHandles = uiDriver().getDriver().getWindowHandles();
// do something that opens a window
Set<String> afterWindowHandles = uiDriver().getDriver().getWindowHandles();
afterWindowHandles.removeAll(beforeWindowHandles);
现在afterWindowHandles
仅包含新打开的窗口。