Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Como abrir nova aba com selenium e continuar na mesma sessão de login?

Olá galera!!!

Como abrir nova aba com selenium e continuar na mesma sessão de login?

6 respostas

Olá, Marlon.

Em uma aplicação Web, o controle de sessão é feito do lado do servidor. Se você estiver em outra aba do mesmo navegador, você automaticamente estará na mesma sessão!

A questão então é como abrir uma nova aba com o Selenium.

Você pode enviar um CTRL + T assim:

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

Para alternar entre as abas, você pode fazer:

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

Olá Alexandre.

Eu usei esse código,

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

.CONTROL, "t")
.CONTROL + t)
.CONTROL , t)

Porém não abriu a nova aba, tentei variações e tbm não foi.

Algumas dúvias: - qual a versão do Selenium? - qual navegador e versão? - qual sistema operacional?

windows 10 firefox quantum o Selenium é o 3.8

solução!

Olá, Marlon.

Testei várias possibilidades. Parece que o sendKeys(Keys.CONTROL +"t") ou até mesmo o .sendKeys(Keys.chord(Keys.CONTROL, "t")) não tem efeito.

A que funcionou usa classes do AWT, uma biblioteca Java para Desktop.

Bonito não é, mas funciona! hehe

        WebDriver driver = new FirefoxDriver();
        driver.get("https://wikipedia.org/");

        driver.findElement(By.name("search")).sendKeys("Digitando na Wikipédia!");

        try {
            Robot robot = new Robot();
            robot.keyPress(KeyEvent.VK_CONTROL);
            robot.keyPress(KeyEvent.VK_T);
            robot.keyRelease(KeyEvent.VK_CONTROL);
            robot.keyRelease(KeyEvent.VK_T);
        } catch (AWTException ex) {
            throw new WebDriverException("Erro ao digitar CTRL + T", ex);
        }

        WebDriverWait wait = new WebDriverWait(driver, 5);
        wait.until(ExpectedConditions.numberOfWindowsToBe(2));

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

        driver.get("https://google.com/");
        driver.findElement(By.name("q")).sendKeys("Digitando no Google em outra aba!");

Referência: https://github.com/bonigarcia/webdrivermanager-examples/blob/master/src/test/java/io/github/bonigarcia/wdm/test/OpenNewTabChromeTest.java

Olá Alexandre, vou pesquisar sobre essa biblioteca, e de antemão agradeço pela sua atenção na resolução do problema. Obrigadão cara. :)