Цель: всплывающее оповещение. независимо от того, показано это или нет, я хочу, чтобы это продолжалось. если он отображается, необходимо установить флажок и нажать «Продолжить». если нет, то игнорируйте.
Блокировщик: если отображается предупреждение, оно обработает действие, и диалоговое окно будет закрыто. но когда это не так, селен висит там без условия обработки, когда он не отображается.
предыстория: раньше я использовал UFT, возможно, моя логика была ошибочной. всплывающее окно является предупреждением приложения (а не системой), поэтому предполагается, что «переключиться на (), принять () / отклонить () не будет работать. И я добавлю дескриптор предупреждения сразу после входа в систему и в методе входа ниже.
Фон фреймворка Selenium. : мы используем фреймворк selenium maven, serenity BDD. объект устанавливается в начале страницы. и serenity.properties обрабатывают тайм-аут по умолчанию и так далее.
Всплывающие объекты (если они появляются):
@FindBy(xpath = "//input[@id='notification-ack']")
private WebElement PcoNoticeChbx; //this is a check box, needs to be checked
@FindBy(xpath = "//button[contains(.,'Continue')]")
private WebElement PcoNoticeContinueBtn;//button to close the alert
*Способ входа *
public void loginIntoExtApplication(String baseURL, String loginURL, String uId, String pwd, String extAppEnv)throws Exception {
gotoExtLoginPage(baseURL, loginURL);
enterLoginCredential(uId, pwd);
openAt("https://" + extAppEnv + ".programportaltest.hrsa.gov/sdms-
extranet/index.xhtml");
Мои подходы:
//1.
if (PcoNoticeChbx!=null) {
PcoNoticeChbx.click();
PcoNoticeContinueBtn.click();
} else {
System.out.println("Dialog didn't display, no need any action");
}
//2. зависает здесь после входа в систему.
if(!getDriver().findElements(By.xpath("//*[@id='submit']")).isEmpty()){
PcoNoticeChbx.click();
PcoNoticeContinueBtn.click();
}
else {
System.out.println("Dialog didn't display, no need any action");
}
//3. добавленный в список просмотра не работает, он показывает ожидание, нижеприведенный код также не работает. Я запустил свой Maven в Junit в режиме отладки. раньше работало нормально. но элементы просмотра всегда отображаются (в ожидании)..
boolean isPresent = getDriver().findElements(By.id("noticebox")).size() >0
System.out.println("the diaolog exist= " + isPresent);
//4. даже попробовал метод try-catch.
try{
PcoNoticeChbx.click();
PcoNoticeContinueBtn.click();
}catch (Exception e){
// Printing logs for my report
Log.error("Report Category button element is not found.");
// After doing my work, now i want to stop my test case
throw(e);
}
return;
}
//5. пробовал список webelemets:
List temp = webdriver.findElements(org.openqa.selenium.By.id("noticebox"));
if (temp.Count > 0 && temp[0].Displayed) {
// script to execute if element is found
} else {
// continue the test
}
//6. и ниже
if (!WebDriver.findElements(By.xpath("//*[@id='submit']")).isEmpty()==true);
{
//handle the dialog
}
else{
//continue
}
// 7.пробовал с булевым значением, но и тут зависает на первых шагах
boolean Nbox = PcoNoticeChbx.isDisplayed(); {
if (Nbox==false)
{
System.out.println("Dialog didn't display, no need any action");
}
else if (Nbox==true) {
PcoNoticeChbx.click() ;
PcoNoticeContinueBtn.click();
}