2015-07-01 35 views

回答

1

來切換標籤是使用SWITCHTO()最好的辦法,如果你知道新的窗口名稱:

driver.switchTo().window(WINDOW_NAME); 

否則獲取打開窗口的列表,並使用該開關:

List<String> openTabs = driver.getWindowHandles(); 

    for(String tab in openTabs) { 
    driver.switchTo().window(openTabs.get(tab); 
    } 

所以你可以迭代打開的窗口,直到找到你需要的。

+0

任何人都可以讓我知道了正確的語法?我對Selenium很陌生。上面的代碼不起作用。我正在使用Chrome驅動程序。 –

+0

@SrikrishnaNadagouda看到我的編輯 – Cathal

0

您可以將ShortcutKeys如Alt + Tab發送給驅動程序,而不使用Actions使用元素。

public static void sendShortCut(WebDriver driver) { 
    Actions action = new Actions(driver); 
    action.sendKeys(Keys.chord(Keys.CONTROL, "T")).build().perform(); 
} 

但是,您的目標是切換到窗口/選項卡。在Selenium中,窗口和選項卡都相同。

我提供您兩種解決方案是自我解釋從功能

public static void switchToWindowByTitle(WebDriver driver, String title) { 
    Set<String> Handles = driver.getWindowHandles(); 
    for (String handle : Handles) { 
     driver.switchTo().window(handle); 
     String drivertitle = driver.getTitle().trim(); 
     if (drivertitle.equals(title)) { 
      break; 
     } 
    } 
} 

//Index is 0 based 
public static void switchToWindowByIndex(WebDriver driver, int index) { 
    Set<String> handles = driver.getWindowHandles(); 
    if (handles.size() > index) { 
     String handle = handles.toArray()[index].toString(); 
     driver.switchTo().window(handle); 
    } 
} 
+0

得到一個錯誤,無效是無效的類型變量switchToWindowByIndex –

+0

@SrikrishnaNadagouda你必須把功能外main()和你是如何調用該函數嗎?你可以發佈您的代碼 – Madhan

0

可以使用打開另一個選項卡中的名稱:使用

driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t"); 

,並切換到標籤:

driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL, Keys.PAGE_DOWN); 
相關問題