4 回答

TA貢獻1806條經(jīng)驗 獲得超5個贊
在執(zhí)行任何操作之前,您應該保存主窗口的窗口句柄。
String mainWindow = driver.getWindowHandle();
現(xiàn)在單擊并執(zhí)行以下操作:
您最多可以輪詢 30 秒,間隔為 5 秒,一旦獲得多個窗口句柄,就中斷輪詢。
Set<String> windows = driver.getWindowHandles();
讓我知道您使用哪種語言。
我可以幫你寫代碼。

TA貢獻1783條經(jīng)驗 獲得超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條經(jīng)驗 獲得超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條經(jīng)驗 獲得超3個贊
要處理窗口大小,您可以使用.getWindowHandles(),并嘗試使用while loop等待新窗口出現(xiàn),然后您可以再次迭代所有當前窗口。
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));
添加回答
舉報