如何切换到 Selenium 中 child window 的 child window(Window 句柄和标题是动态的)?
How to switch to child window of a child window in Selenium(Window handles and titles are dynamic)?
在一个应用程序中,有一个 child window,它会打开另一个 window。总共有三个windows。 window 句柄和每个 window 的标题是动态的,它们每 session.
更改一次
所以我存储了parentwindow和第一个childwindow的句柄,然后我调用了getWindowHandles方法,将所有句柄存储在一个集合中,删除parent window 和第一个 child window。集合中剩余的 window 个句柄将是第三个 window 个句柄。
Set<String> windowHandles = uiDriver().getDriver().getWindowHandles();
windowHandles.remove(parentHandle);
windowHandles.remove(firstChildHanlde);
String thirdChildHandle = windowHandles.toString();
如果您能帮我更方便的获取childwindow句柄,那将是莫大的帮助
对于更通用的处理 windows 句柄的方法,您可以在执行一些打开更多 windows 的操作之前获取 Set
个 windows 个句柄,执行action,然后获取window句柄的Set
,然后从"after"Set
中移除"before"Set
。剩下的就是行动中打开的windows
Set<String> beforeWindowHandles = uiDriver().getDriver().getWindowHandles();
// do something that opens a window
Set<String> afterWindowHandles = uiDriver().getDriver().getWindowHandles();
afterWindowHandles.removeAll(beforeWindowHandles);
现在afterWindowHandles
只包含新打开的windows。
在一个应用程序中,有一个 child window,它会打开另一个 window。总共有三个windows。 window 句柄和每个 window 的标题是动态的,它们每 session.
更改一次所以我存储了parentwindow和第一个childwindow的句柄,然后我调用了getWindowHandles方法,将所有句柄存储在一个集合中,删除parent window 和第一个 child window。集合中剩余的 window 个句柄将是第三个 window 个句柄。
Set<String> windowHandles = uiDriver().getDriver().getWindowHandles();
windowHandles.remove(parentHandle);
windowHandles.remove(firstChildHanlde);
String thirdChildHandle = windowHandles.toString();
如果您能帮我更方便的获取childwindow句柄,那将是莫大的帮助
对于更通用的处理 windows 句柄的方法,您可以在执行一些打开更多 windows 的操作之前获取 Set
个 windows 个句柄,执行action,然后获取window句柄的Set
,然后从"after"Set
中移除"before"Set
。剩下的就是行动中打开的windows
Set<String> beforeWindowHandles = uiDriver().getDriver().getWindowHandles();
// do something that opens a window
Set<String> afterWindowHandles = uiDriver().getDriver().getWindowHandles();
afterWindowHandles.removeAll(beforeWindowHandles);
现在afterWindowHandles
只包含新打开的windows。