4 回答
TA贡献1806条经验 获得超5个赞
在执行任何操作之前,您应该保存主窗口的窗口句柄。
String mainWindow = driver.getWindowHandle();
现在单击并执行以下操作:
您最多可以轮询 30 秒,间隔为 5 秒,一旦获得多个窗口句柄,就中断轮询。
Set<String> windows = driver.getWindowHandles();
让我知道您使用哪种语言。
我可以帮你写代码。
TA贡献1783条经验 获得超4个赞
你可以尝试这样的方法来解决你的问题
// Store the current window handle
String mainWin = driver.getWindowHandle();
// Perform the click operation that opens new window
//Wait till driver.getWindowHandles() returns 2 windows
// Switch to new window opened
for(String winHandle : driver.getWindowHandles()){
driver.switchTo().window(winHandle);
}
//Get current window to take decision on the next actions
String currentWin= driver.getWindowHandle();
// Perform the actions on new window
// Close the new window
driver.close();
// Switch back to original first window
driver.switchTo().window(mainWin);
TA贡献2012条经验 获得超12个赞
您可以使用 Javascript 来切换窗口:下面是代码:
((JavascriptExecutor)LoginDriver).executeScript("window.open('about:blank', '-blank')");
// To switch to the new tab
ArrayList<String> tabs = new ArrayList<String>(LoginDriver.getWindowHandles());
LoginDriver.switchTo().window(tabs.get(1));
TA贡献1804条经验 获得超3个赞
要处理窗口大小,您可以使用.getWindowHandles(),并尝试使用while loop等待新窗口出现,然后您可以再次迭代所有当前窗口。
int sizeBefore = driver.getWindowHandles().size();
elemnt.click();//to bring up new windows
//until current windows size>before, please keep adding timeout
while(driver.getWindowHandles().size()==sizeBefore) {
//wait in milliseconds
Thread.sleep(500);
}
//handle current size windows
ArrayList<String> hnds = new ArrayList<String> (driver.getWindowHandles());
//iteration windows
for(String hnd: hnds) {
driver.switchTo().window(hnd);
System.out.println(driver.getTitle());
}
要切换到特定窗口,请使用:
driver.switchTo().window(hnds.get(index));
添加回答
举报