132 votes

Comment ouvrir un nouvel onglet en utilisant Selenium WebDriver en Java ?

Comment ouvrir un nouvel onglet dans le navigateur Firefox existant en utilisant Selenium WebDriver (alias Selenium 2) en Java ?

1voto

Nikhil Shah Points 61

Comment ouvrir un nouvel onglet à l'aide de Selenium WebDriver avec Java pour Chrome :

ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-extensions");
driver = new ChromeDriver(options);
driver.manage().window().maximize();
driver.navigate().to("https://google.com");
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_T);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_T);

Le code ci-dessus va désactiver les premières extensions et en utilisant la classe robot, un nouvel onglet va s'ouvrir.

1voto

anuja jain Points 758

Consultez cet exemple complet pour comprendre comment ouvrir plusieurs onglets, passer d'un onglet à l'autre et, à la fin, fermer tous les onglets.

public class Tabs {

    WebDriver driver;

    Robot rb;

    @BeforeTest
    public void setup() throws Exception {
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\Anuja.AnujaPC\\Downloads\\chromedriver_win32\\chromedriver.exe");
        WebDriver driver=new ChromeDriver();
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
        driver.get("http://qaautomated.com");
    }

    @Test
    public void openTab() {
        // Open tab 2 using CTRL + T keys.
        driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");

        // Open URL In 2nd tab.
        driver.get("http://www.qaautomated.com/p/contact.html");

        // Call switchToTab() method to switch to the first tab
        switchToTab();

        // Call switchToTab() method to switch to the second tab.
        switchToTab();
    }

    public void switchToTab() {
        // Switching between tabs using CTRL + tab keys.
        driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"\t");

        // Switch to current selected tab's content.
        driver.switchTo().defaultContent();
    }

    @AfterTest
    public void closeTabs() throws AWTException {
        // Used Robot class to perform ALT + SPACE + 'c' keypress event.
        rb = new Robot();
        rb.keyPress(KeyEvent.VK_ALT);
        rb.keyPress(KeyEvent.VK_SPACE);
        rb.keyPress(KeyEvent.VK_C);
    }

}

Cet exemple est donné par cette page web .

1voto

khaleefa shaik Points 21

Cette ligne de code va ouvrir un nouvel onglet de navigateur en utilisant Selenium WebDriver :

((JavascriptExecutor)getDriver()).executeScript("window.open()");

1voto

frianH Points 5901

Java

Je recommande d'utiliser JavascriptExecutor :

  • Ouvrir une nouvelle fenêtre vide :

    ((JavascriptExecutor) driver).executeScript("window.open()");

  • Ouvrir une nouvelle fenêtre avec une URL spécifique :

    ((JavascriptExecutor) driver).executeScript("window.open('https://google.com')");

Importation suivante :

import org.openqa.selenium.JavascriptExecutor;

1voto

Nandan A Points 313

Il y a trois façons de procéder. Dans l'exemple ci-dessous, je fais les étapes suivantes pour ouvrir facebook dans un nouvel onglet,

  • Lancement de https://google.com
  • A la recherche de facebook et obtenir le facebook URL
  • Ouverture facebook dans un onglet différent.

Solution#1 : Utilisation de window handles .

driver = new ChromeDriver(options);
driver.get("https://www.google.com/search?q=facebook");
String facebookUrl = driver.findElement(By.xpath("(//a[contains(@href,'facebook.com')])[1]")).getAttribute("href");

JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.open()");

ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
        driver.switchTo().window(tabs.get(1));

driver.get(facebookUrl);

Solution n°2 : En créant de nouveaux driver instance. Ce n'est pas recommandé, mais c'est aussi un moyen possible de le faire.

driver = new ChromeDriver(options);
driver.get("https://www.google.com/search?q=facebook");
String facebookUrl = driver.findElement(By.xpath("(//a[contains(@href,'facebook.com')])[1]")).getAttribute("href");

/*Create an another instance of driver.*/   
driver = new ChromeDriver(options);
driver.get(facebookUrl);

Solution#3 : Utiliser Selenium 4

driver.get("https://www.google.com/search?q=facebook");
String facebookUrl = driver.findElement(By.xpath("(//a[contains(@href,'facebook.com')])[1]")).getAttribute("href");
driver.switchTo().newWindow(WindowType.TAB);
driver.navigate().to(facebookUrl);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X