如何在Chrome中打开一个新标签,然后使用Selenium切换到Java中的新标签



这是我写的代码,以打开已经在Chrome中打开的新标签,但它仅将其重定向到现有选项卡中的第二个URL。

我想打开一个新的选项卡并加载'www.mailinator.com'

的URL
System.setProperty("webdriver.chrome.driver","D:\Vijayalaxmi Testing\BrowserDrivers\ChromeDriver\chromedriver.exe" );
    obj=new ChromeDriver();
    String baseUrl="https://www.google.co.in/";
    obj.get(baseUrl);
    obj.findElement(By.tagName("body")).sendKeys(Keys.CONTROL+"t");

    obj.get("https://www.mailinator.com/");

有人可以帮助我吗?

您可以使用JavaScript

打开新选项卡
public void openNewTab() {
    ((JavascriptExecutor)driver).executeScript("window.open('about:blank','_blank');");
}

如果要在新标签中执行操作,则可以使用:

driver.switchTo().window();此方法接受字符串作为参数。窗口句柄确切

您可以得到这样的所有手柄

driver.getWindowHandles().这将返回当前浏览器中的所有手柄。

为了切换到新创建的选项卡,请迭代手柄并使用switchTo()方法:

    Set<String> handles = driver.getWindowHandles();
    String currentWindowHandle = driver.getWindowHandle();
    for (String handle : handles) {
        if (!currentWindowHandle.equals(handle)) {
            driver.switchTo().window(handle);
        }
    }

警告:如果您有2个以上的选项卡,这可能很棘手。

使用 driver.switchTo().window(tabs.get(1));打开新标签

obj=new ChromeDriver();
String baseUrl="https://www.google.co.in/";
obj.get(baseUrl);
obj.findElement(By.tagName("body")).sendKeys(Keys.CONTROL+"t");
ArrayList<String> tabs = new ArrayList<String> (obj.getWindowHandles());
driver.switchTo().window(tabs.get(1)); //switches to new tab
obj.get("https://www.mailinator.com/");
driver.switchTo().window(tabs.get(0)); // switch back to old

最新更新