firefoxdriver - Cómo manejar Pop-up en Selenium WebDriver usando Java
selenium webdriver python (8)
Cuando el mensaje toastr apareció en la pantalla de Firefox. la etiqueta siguiente se mostró en error de fuego.
<div class="toast-message">Invalid Credentials, Please check Password</div>.
Tomé la captura de pantalla en ese momento. Y hizo los cambios a continuación en el código de selenio java.
String alertText = "";
WebDriverWait wait = new WebDriverWait(driver, 5);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("toast-message")));
WebElement toast1 = driver.findElement(By.className("toast-message"));
alertText = toast1.getText();
System.out.println( alertText);
Y mi problema de toastr popup se resolvió.
Deseo gestionar la parte de inicio de sesión en rediff.com, pero el código siguiente no funciona para eso:
driver.get("http://www.rediff.com/");
WebElement sign = driver.findElement(By.xpath("//html/body/div[3]/div[3]/span[4]/span/a"));
sign.click();
String myWindowHandle = driver.getWindowHandle();
driver.switchTo().window(myWindowHandle);
WebElement email_id= driver.findElement(By.xpath("//*[@id=''signin_info'']/a[1]"));
email_id.sendKeys("hi");
Si myWindowHandle
no es la cadena correcta, hágamelo saber cómo obtener el nombre de la ventana emergente, porque no puedo encontrar el nombre de la ventana emergente.
Encontré la solución para el programa anterior, que tenía el objetivo de iniciar sesión en http://rediff.com
public class Handle_popupNAlert
{
public static void main(String[] args ) throws InterruptedException
{
WebDriver driver= new FirefoxDriver();
driver.get("http://www.rediff.com/");
WebElement sign = driver.findElement(By.xpath("//html/body/div[3]/div[3]/span[4]/span/a"));
sign.click();
Set<String> windowId = driver.getWindowHandles(); // get window id of current window
Iterator<String> itererator = windowId.iterator();
String mainWinID = itererator.next();
String newAdwinID = itererator.next();
driver.switchTo().window(newAdwinID);
System.out.println(driver.getTitle());
Thread.sleep(3000);
driver.close();
driver.switchTo().window(mainWinID);
System.out.println(driver.getTitle());
Thread.sleep(2000);
WebElement email_id= driver.findElement(By.xpath("//*[@id=''c_uname'']"));
email_id.sendKeys("hi");
Thread.sleep(5000);
driver.close();
driver.quit();
}
}
No hagas la situación compleja. Use ID
si están disponibles.
driver.get("http://www.rediff.com");
WebElement sign = driver.findElement(By.linkText("Sign in"));
sign.click();
WebElement email_id= driver.findElement(By.id("c_uname"));
email_id.sendKeys("hi");
Para cambiar a una ventana emergente, debe usar getWindowHandles()
y recorrerlos en iteración.
En su código está utilizando getWindowHandle()
que le dará la ventana principal.
String parentWindowHandler = driver.getWindowHandle(); // Store your parent window
String subWindowHandler = null;
Set<String> handles = driver.getWindowHandles(); // get all window handles
Iterator<String> iterator = handles.iterator();
while (iterator.hasNext()){
subWindowHandler = iterator.next();
}
driver.switchTo().window(subWindowHandler); // switch to popup window
// Now you are in the popup window, perform necessary actions here
driver.switchTo().window(parentWindowHandler); // switch back to parent window
Puede manejar la ventana emergente o el cuadro de alerta:
Alert alert = driver.switchTo().alert();
alert.accept();
También puede rechazar el cuadro de alerta:
Alert alert = driver.switchTo().alert();
alert().dismiss();
Puede usar el código siguiente dentro de su código cuando obtiene cualquier cuadro de mensaje emergente del navegador web.
// Accepts (Click on OK) Chrome Alert Browser for RESET button.
Alert alertOK = driver.switchTo().alert();
alertOK.accept();
//Rejects (Click on Cancel) Chrome Browser Alert for RESET button.
Alert alertCancel = driver.switchTo().alert();
alertCancel.dismiss();
//get the main handle and remove it
//whatever remains is the child pop up window handle
String mainHandle = driver.getWindowHandle();
Set<String> allHandles = driver.getWindowHandles();
Iterator<String> iter = allHandles.iterator();
allHandles.remove(mainHandle);
String childHandle=iter.next();
public void Test(){
WebElement sign = fc.findElement(By.xpath(".//*[@id=''login-scroll'']/a"));
sign.click();
WebElement LoginAsGuest=fc.findElement(By.xpath(".//*[@id=''guest-login-option'']"));
LoginAsGuest.click();
WebElement email_id= fc.findElement(By.xpath(".//*[@id=''guestemail'']"));
email_id.sendKeys("[email protected]");
WebElement ContinueButton=fc.findElement(By.xpath(".//*[@id=''contibutton'']"));
ContinueButton.click();
}