如何在 Selenium 中切换到活动选项卡?

seleniumautomation testingtesting tools

我们可以在 Selenium 中切换到活动选项卡。Keys.chord 和 sendKeys 方法用于打开新选项卡。Keys.chord 方法可以一次传递多个按键。

将 Keys.CONTROL 和 Keys.ENTER 组合作为参数传递给 Keys.chord 方法。该参数存储为字符串,并再次作为参数传递给 sendKeys 方法。

语法

String tb = Keys.chord(Keys.CONTROL,Keys.ENTER);
driver.findElement(By.xpath("//*[text()='Company']")).sendKeys(tb);

所有打开的窗口 ID 都存储在一个数组列表中。默认情况下,驱动程序的焦点位于父窗口上。要将焦点切换到新选项卡,请使用 switchTo().window 方法。

getWindowHandle 方法用于保存活动选项卡的窗口 ID,然后将其作为参数传递给 switchTo().window 方法。getWindowHandles 方法保存所有打开的窗口 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 java.util.ArrayList;
public class SwitchActiveTab{
   public static void main(String[] args) {
      System.setProperty("webdriver.chrome.driver", "C:\Users\ghs6kor\Desktop\Java\chromedriver.exe");
      WebDriver driver = new ChromeDriver();
      // 等待 5 秒
      driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
      driver.get("https://www.tutorialspoint.com/about/about_careers.htm");
      // Keys.Chord 字符串
      String tb = Keys.chord(Keys.CONTROL,Keys.ENTER);
      driver.findElement(By.xpath("//*[text()='FAQ']")).sendKeys(tb);
      Thread.sleep(10000);
      // 将窗口 ID 存储在数组列表中
      ArrayList<String> wid = new ArrayList<String>(driver.getWindowHandles());
      // 切换到活动选项卡
      driver.switchTo().window(wid.get(1));
      System.out.println("活动选项卡的页面标题:" + driver.getTitle());
      // 切换到父级
      driver.switchTo().window(newTb.get(0));
      System.out.println("Page title of parent window: " + driver.getTitle());
      driver.quit();
   }
}

输出


相关文章