如何在同一個瀏覽器中開啟新標籤頁並在它們之間切換,使用Selenium?


我們可以使用Selenium webdriver在同一個瀏覽器中開啟新的標籤頁並在它們之間切換。首先,要在同一個瀏覽器中開啟一個新的標籤頁,我們需要藉助Keys.chord和sendKeys方法。

Keys.CONTROL和Keys.ENTER引數傳遞給Keys.chord方法。此方法產生一個字串值,並作為引數傳遞給sendKeys方法。

語法

String n = Keys.chord(Keys.CONTROL,Keys.ENTER);
driver.findElement(By.id("open-tab")).sendKeys(n);

開啟第二個標籤頁後,getWindowHandles方法用於在一個Set中儲存所有視窗控制代碼ID。為了將webdriver物件的焦點切換到新標籤頁,使用switchTo().window方法。

新標籤頁的視窗控制代碼ID應作為引數傳遞給switchTo().window,以將驅動程式焦點切換到新標籤頁。getWindowHandle方法用於獲取當前焦點瀏覽器視窗的視窗控制代碼ID。

讓我們在一個新的瀏覽器標籤頁中開啟“團隊”連結:

示例

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
import java.util.List;
import org.openqa.selenium.Keys;
import java.util.ArrayList;
public class SwitchNewTab{
   public static void main(String[] args) {
      System.setProperty("webdriver.chrome.driver",
         "C:\Users\ghs6kor\Desktop\Java\chromedriver.exe");
      WebDriver driver = new ChromeDriver();
      //implicit wait
      driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
      driver.get("https://tutorialspoint.tw/about/about_careers.htm");
      // method Keys.chord
      String n = Keys.chord(Keys.CONTROL, Keys.ENTER);
      //open link in new tab
      driver.findElement(By.linkText("Team")).sendKeys(n);
      Thread.sleep(8000);
      // store window handle ids
      ArrayList<String> w = new ArrayList<String>(driver.getWindowHandles());
      //switch to open tab
      driver.switchTo().window(w.get(1));
      System.out.println("New tab title: " + driver.getTitle());
      //switch to first tab
      driver.switchTo().window(w.get(0));
      System.out.println("First tab title: " + driver.getTitle());
      driver.quit();
   }
}

輸出

更新於:2021年4月7日

7000+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告