Je souhaite gérer la partie de connexion sur rediff.com, mais le code ci-dessous ne fonctionne pas pour cela:
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
n'est pas la chaîne correcte, laissez-moi savoir comment obtenir le nom de la fenêtre contextuelle, car je ne trouve pas le nom de la fenêtre contextuelle.
Pour basculer vers une fenêtre contextuelle, vous devez utiliser getWindowHandles()
et le parcourir.
Dans votre code, vous utilisez getWindowHandle()
qui vous donnera la fenêtre parente elle-même.
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
J'ai trouvé la solution pour le programme ci-dessus, qui avait pour objectif de se connecter à 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();
}
}
Vous pouvez gérer une fenêtre contextuelle ou une boîte d’alerte:
Alert alert = driver.switchTo().alert();
alert.accept();
Vous pouvez également refuser la boîte d’alerte:
Alert alert = driver.switchTo().alert();
alert().dismiss();
Vous pouvez utiliser le code ci-dessous dans votre code lorsque vous recevez un message d'alerte contextuel du navigateur 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();
Ne compliquez pas la situation. Utilisez ID
s'ils sont 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");
Lorsque le message toastr est apparu sur l'écran de firefox. la balise ci-dessous était affichée dans un bug de feu.
<div class="toast-message">Invalid Credentials, Please check Password</div>.
J'ai pris la capture d'écran à ce moment-là ... et les modifications ci-dessous dans le code Selenium 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);
Et mon problème de toastr popup a été résolu.
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();
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