Comment gérer java script de fenêtre, au sélénium
J'ai créé un script d'automatisation pour la connexion qui contient le nom d'utilisateur et mot de passe.
J'ai une feuille excel dans laquelle le résultat est mis à jour que de passer si le nom d'utilisateur et le mot de passe est correct.
Mais si le nom d'utilisateur et le mot de passe est incorrect JavaScript pop up box est à venir.
Je suis incapable de gérer ce bouton ok.
J'ai déjà essayé ce code. Mais je suis d'Exception
org.openqa.selenium.WebDriverException: findElement execution failed;
An open modal dialog blocked the operation
(WARNING: The server did not provide any stacktrace information).
Comment gérer ouvrir la boîte de dialogue modale?
Alert alert = driver.switchTo().alert();
System.out.println(alert.getText());
alert.accept();
Voici mon code
public class Read {
public WebDriver driver;
@BeforeMethod
public void launch() throws Exception {
System.setProperty("webdriver.chrome.driver",
"C:\\Chrome\\chromedriver_win_26.0.1383.0\\chromedriver.exe");
driver = new ChromeDriver();
}
@Test
public void testImportexport1() throws BiffException, IOException,
RowsExceededException, WriteException, InterruptedException {
FileInputStream fis = new FileInputStream("Data//Logindev.xls");
Workbook w = Workbook.getWorkbook(fis);
Sheet s = w.getSheet(0);
String a[][] = new String[s.getRows()][s.getColumns()];
FileOutputStream fos = new FileOutputStream("Data//Logindev_1.xls");
WritableWorkbook wwb = Workbook.createWorkbook(fos);
WritableSheet ws = wwb.createSheet("LoginResult", 0);
System.out.println("s.getRows() = " + s.getRows());
for (int i = 0; i < s.getRows(); i++) {
System.out.println("s.getColumns() = " + s.getColumns());
for (int j = 0; j < s.getColumns(); j++) {
a[i][j] = s.getCell(j, i).getContents();
Label l = new Label(j, i, a[i][j]);
Label l1 = new Label(2, 0, "Result");
ws.addCell(l);
ws.addCell(l1);
System.out.println("Labels Added!!!!!!!!!");
}
}
for (int i = 1; i < s.getRows(); i++) {
driver.get("any url");
driver.findElement(By.name("txtUserName")).sendKeys(
s.getCell(0, i).getContents());
driver.findElement(By.name("txtPwd")).sendKeys(
s.getCell(1, i).getContents());
driver.findElement(By.name("btnSignIn")).click();
Thread.sleep(15000);
if (driver.findElement(By.linkText("xyz")).isDisplayed()) {
System.out.println("Element is found");
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.findElement(
By.xpath("//*[@id='ctl00_headerContent_lnkLogOut']"))
.click();
Thread.sleep(2000);
Label l2 = new Label(2, i, "Pass");
ws.addCell(l2);
} else {
try {
System.out.println("Element Not Found");
Label l2 = new Label(2, i, "Fail");
ws.addCell(l2);
Alert alert = driver.switchTo().alert();
System.out.println(alert.getText());
alert.accept();
} catch (NoAlertPresentException e) {
e.printStackTrace();
}
}
}
Thread.sleep(2000);
wwb.write();
wwb.close();
}
}
Comme c'est une boîte de dialogue modale, il est possible que la zone d'alerte est résidant dans un cadre. essayez de passer à l'image, puis cliquez sur OK.
comment vais-je trouver le nom du cadre ou un cadre id??Parce que je suis incapable de faire un clic droit sur cette image que aussi sur ce bouton Ok.Et le firebug est aussi de ne pas identifier.
si vous ne parvenez pas à droite, cliquez sur le bouton ok, vous pouvez ouvrir firebug et de recherche avec le texte présent sur la modal box à l'aide de l'option rechercher dans firebug. Qui va vous montrer le code html de votre boîte d'alerte et le cadre. Si vous ne parvenez toujours pas à trouver l'id, laissez-moi savoir le site web si elle n'est pas confidentielle. Je vais essayer de trouver la solution.
salut HemChe,je suis incapable de trouver l'id à l'aide de firebug.Mais mon site est confidentiel.S'il vous plaît dites-moi comment vais-je le résoudre?
Est-ce la même boîte de dialogue u obtenez lorsque vous cliquez sur le bouton connexion dans www.flipkart.com page d'accueil ?
comment vais-je trouver le nom du cadre ou un cadre id??Parce que je suis incapable de faire un clic droit sur cette image que aussi sur ce bouton Ok.Et le firebug est aussi de ne pas identifier.
si vous ne parvenez pas à droite, cliquez sur le bouton ok, vous pouvez ouvrir firebug et de recherche avec le texte présent sur la modal box à l'aide de l'option rechercher dans firebug. Qui va vous montrer le code html de votre boîte d'alerte et le cadre. Si vous ne parvenez toujours pas à trouver l'id, laissez-moi savoir le site web si elle n'est pas confidentielle. Je vais essayer de trouver la solution.
salut HemChe,je suis incapable de trouver l'id à l'aide de firebug.Mais mon site est confidentiel.S'il vous plaît dites-moi comment vais-je le résoudre?
Est-ce la même boîte de dialogue u obtenez lorsque vous cliquez sur le bouton connexion dans www.flipkart.com page d'accueil ?
OriginalL'auteur sarmila | 2013-03-25
Vous devez vous connecter pour publier un commentaire.
Je pense que votre extrait de code pour gérer une boîte de dialogue modale est correct. J'ai même essayé en c# format pour un site web, il fonctionne.
Ce que je pense de mal dans votre cas, c'est que peut-être votre alerte code de gestion n'est pas immédiatement après la ligne de code qui déclenche la boîte de dialogue modale. Le message d'erreur que vous avez donné, il est évident que vous faites partie de l'opération sur la page web après la boîte de dialogue modale est affichée et avant de le manipuler.
Je tiens également à mentionner à propos d'une autre méthode pour supprimer les boîtes de dialogue modales en c#.
Utilisation SendKeys classe de l'espace de nom Système.De Windows.Les formes et envoyer les saisies au clavier directement comme,
Mise à jour
Pouvez-vous partager le code complet, il sera utile dans l'analyse de l'écoulement et de creuser le problème. À partir de ce que vous avez partagé déjà, je ne vois pas de problème dans l'approche.
Essayez le nouveau flux de code que j'ai mis dans ma réponse, il va travailler pour vous. J'ai légèrement changé la logique, j'ai fait l'essai d'alerte et sur NoAlertPresentException elle exécutera vos "Si & Else" le flux de. Si il y a une boîte de dialogue Modale, alerte code dans le Try partie va la traiter
OriginalL'auteur CheryJose
Vous avez besoin pour vérifier la présence d'un alerte après avoir appuyé sur le bouton de connexion.
OriginalL'auteur Code Enthusiastic
Je ne peut pas donner la solution exacte, mais l'approche suivante peut vous aider.
//méthode permettant de vérifier si l'Alerte est présente.
//entrer le nom d'utilisateur et le mot de passe
Espère que cela donne une idée. Laissez-nous savoir si vous êtes toujours confronté à la question.
Si possible partager/envoyez-moi le lien du site ou de tout autre site qui se ressemblent(fonctionnalité sage) de votre site web. Je vais travailler sur elle et obtenir de nouveau à vous avec code de travail effectif.
OriginalL'auteur Hemanth