При попытке проверить, отображается предупреждение или нет, отображается исключение ссылки на устаревший элемент. Я использовал все следующие методы для обработки диалогового окна Alert, но оно показывает исключение.
Все элементы присутствуют, пока я проверяю вручную. Когда я автоматизирую это, это показывает исключение ... Но я не знаю, где это происходит ?? !! ...
Код определения шага:
(В этом коде я использую класс Action)
public void alert_msg_display() throws Throwable {
WebElement x= driver.findElement(By.xpath("//button[@data-hover='LOGIN NOW']")); //Login button path
actionClick(driver, x);
WebElement y= driver.findElement(By.xpath("//md-dialog[@aria-label='Alert']/md-dialog-content/div")); // Alert message text path
String a= y.getText();
WebElement z= driver.findElement(By.xpath("//button[@ng-click='hide()']")); // Alert box close button path
actionClick(driver, z);
String a1 = "Please Enter Branch Id";
driver.findElement(By.xpath("//input[@ng-model='Branchid']")).sendKeys("HO");
actionClick(driver, x);
String b= y.getText();
actionClick(driver, z);
String b1 = "Please Enter Username (Email Id)";
driver.findElement(By.xpath("//input[@ng-model='Username']")).sendKeys("testmail");
actionClick(driver, x);
String c= y.getText();
actionClick(driver, z);
String c1 = "Please Enter Username (Email Id)";
driver.findElement(By.xpath("//input[@ng-model='Username']")).clear();
driver.findElement(By.xpath("//input[@ng-model='Username']")).sendKeys("xxxxx.rt@yyyyy.com");
actionClick(driver, x);
String d= y.getText();
actionClick(driver, z);
String d1 = "Please Enter Password";
driver.findElement(By.xpath("//input[@name='password']")).sendKeys("abcde");
actionClick(driver, x);
String e= y.getText();
actionClick(driver, z);
String e1 = "LOGIN FAILED, PLEASE CHECK YOUR USERNAME OR PASSWORD";
if (a.equals(a1) && b.equals(b1) && c.equals(c1) && d.equals(d1) && e.equals(e1))
test.log(LogStatus.PASS, "Test Case ID: LOG_006 to LOG_010 - Pass");
else
test.log(LogStatus.FAIL, "Test Case ID: LOG_006 to LOG_010 - Fail");
}
Код файла бегуна
public void actionClick(WebDriver driver, WebElement a) {
Actions action = new Actions(driver);
action.moveToElement(a).click().build().perform();
}
Всего 1 ответ
Движение, которое вы нажимаете на элемент «Войти сейчас» (x), ссылки на x & y будут обновлены. Поэтому вы не можете использовать x & y, которые указывают на старые ссылки и которые приведут к исключению Statle Element.
Решением будет получение элемента каждый раз, когда вы захотите нажать на x & y, чтобы у вас была последняя ссылка на элементы.