Olá galera!!!
Como abrir nova aba com selenium e continuar na mesma sessão de login?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Olá galera!!!
Como abrir nova aba com selenium e continuar na mesma sessão de login?
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
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!");
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. :)