import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.time.Duration;
public class LogoutAfterInactivityTest {
public static void main(String[] args) {
// Configurar o caminho do ChromeDriver (substitua pelo caminho correto)
System.setProperty(“webdriver.chrome.driver”, “caminho/para/chromedriver”);
// Criar uma instância do WebDriver
WebDriver driver = new ChromeDriver();
try {
// Configurações iniciais
String loginPageUrl = “https://example.com/login”; // Substitua pela URL da página de login
String dashboardUrl = “https://example.com/dashboard”; // URL do dashboard após login
String email = “usuario@example.com”; // Credenciais válidas
String password = “senhaValida”; // Substitua por uma senha válida
int inactivityTimeout = 120; // Tempo de inatividade esperado em segundos (ajustar conforme o sistema)
// 1. Acessar a página de login
driver.get(loginPageUrl);
// 2. Realizar o login
WebElement emailField = driver.findElement(By.id(“email”)); // Substitua ‘email’ pelo ID correto
emailField.clear();
emailField.sendKeys(email);
WebElement passwordField = driver.findElement(By.id(“password”)); // Substitua ‘password’ pelo ID correto
passwordField.clear();
passwordField.sendKeys(password);
WebElement loginButton = driver.findElement(By.id(“loginButton”)); // Substitua ‘loginButton’ pelo ID correto
loginButton.click();
// 3. Aguardar o redirecionamento para o dashboard
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
wait.until(ExpectedConditions.urlToBe(dashboardUrl));
System.out.println(“Login bem-sucedido. Aguardando inatividade…”);
// 4. Aguarde o período de inatividade sem interagir com a página
Thread.sleep((inactivityTimeout + 5) * 1000); // Aguarde um pouco mais que o timeout esperado
// 5. Verificar se o usuário foi redirecionado para a página de login após o timeout
wait.until(ExpectedConditions.urlToBe(loginPageUrl));
String currentUrl = driver.getCurrentUrl();
if (currentUrl.equals(loginPageUrl)) {
System.out.println(“Teste bem-sucedido: Logout automático após inatividade.”);
} else {
System.out.println(“Teste falhou: Redirecionamento após inatividade não ocorreu.”);
}
// 6. Validar mensagem de sessão expirada (opcional)
WebElement sessionExpiredMessage = driver.findElement(By.id(“sessionExpiredMessage”)); // Substitua pelo ID correto
if (sessionExpiredMessage.isDisplayed()) {
System.out.println(“Mensagem de sessão expirada exibida corretamente.”);
} else {
System.out.println(“Mensagem de sessão expirada não encontrada.”);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// Fechar o navegador
driver.quit();
}
}
}
Explicação do Código
- Definir tempo de inatividade esperado:
- A variável
inactivityTimeout
contém o tempo esperado para logout automático (em segundos). - Use
Thread.sleep()
para simular a inatividade do usuário.
- A variável
- Verificar redirecionamento após inatividade:
- Após o tempo de espera, o teste verifica se o usuário foi redirecionado para a página de login.
- Mensagem de sessão expirada:
- O teste tenta validar se uma mensagem de “Sessão expirada” foi exibida na página.
- Mensagens no console:
- O teste exibe mensagens de sucesso ou falha no console, conforme o comportamento do sistema.
Aprimoramentos
- Verificação de cookies/session storage:
- Verifique se os cookies ou tokens de sessão foram invalidados após o logout:
- Simulação de inatividade real:
- Use bibliotecas como Actions para mover o mouse ou interagir minimamente antes de parar, dependendo da definição de inatividade do sistema.
- Frameworks de Teste:
- Use JUnit ou TestNG para organizar e relatar os resultados dos testes.