2016-06-02 14 views
1

Ok, also ich weiß, es gibt eine Reihe von anderen Antworten auf diese Frage über Warnungen in Webdriver und ich habe sie durchgesehen, aber ich denke, meine Situation ist ein wenig anders. Wenn ich auf meine Senden-Schaltfläche klicke, habe ich bereits in 3 Frames gewechselt und dann habe ich die Warnung erhalten, also habe ich versucht, zu den Standardinhalten zurückzukehren und dann auf die Warnung mit einem try catch and alert.accept zu klicken, aber es klickt immer noch nicht auf aufmerksam. Code ist unten. Vielen Dank im Voraus für Ihre Hilfe :)Klicken Sie auf OK bei Alarm Selenium Webdriver

public class BookAHoliday { 

    public FirstPage completeHolidayFormAndSubmit(String firstDate, String lastDate) { 

     sleepsAreBad(); 
     driver.switchTo().frame("ContainerFrame"); 
     driver.switchTo().frame("iframeCommunityContainer"); 
     driver.switchTo().frame("FORMCONTAINER"); 
     fluentWait(By.id("StartDate_txtInput")); 
     firstDayOfLeaveInput.sendKeys(firstDate); 
     sleepsAreBad(); 
     lastDayofLeaveInput.sendKeys(lastDate); 

     try { 
      submitButton.click(); 
     } catch (UnhandledAlertException f) { 
      try { 
       sleepsAreBad(); 
       driver.switchTo().defaultContent(); 
       Alert alert = driver.switchTo().alert(); 
       String alertText = alert.getText(); 
       System.out.println("Alert data: " + alertText); 
       alert.accept(); 
      } catch (NoAlertPresentException e) { 
       e.printStackTrace(); 
      } 
     } 
     sleepsAreBad(); 

     return PageFactory.initElements(driver, FirstPage.class); 
    } 


    private void sleepsAreBad() { 
     try { 
      Thread.sleep(5000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 

    } 


public class BaseTest { 


    public static WebDriver driver; 
    static String driverPath = "C:\\"; 

    @BeforeClass 
    public static void setUp() { 
     System.out.println("****************"); 
     System.out.println("launching Browser"); 
     System.out.println("****************"); 
     // Browser selection 

     //Firefox 

     DesiredCapabilities dc = new DesiredCapabilities(); 
     dc.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.IGNORE); 
     driver = new FirefoxDriver(dc); 

driver.get(URL); 

@AfterClass() 
    public static void tearDown() { 
     if (driver != null) { 
      System.out.println("Closing browser"); 
      driver.quit(); 
     } 

    } 


public class Bookings extends BaseTest{ 

    @Test(description = "Holiday booking") 
    public void CD01() { 

     FirstPage firstPage = PageFactory.initElements(driver, FirstPage.class); 
     firstPage 


       .logIn("username", "password") 
       .clickHolidayLink() 
       .completeHolidayFormAndSubmit("12/05/2016", "15/05/2016"); 



    } 

alert box ist das Warnfeld

+0

Sie in der Regel nicht wechseln müssen, um den Standard-Content für Benachrichtigungen bekommen haben. Sind Sie sicher, dass es sich um eine JavaScript-Benachrichtigung handelt? Es funktioniert nur für diese Art von Warnungen. – Mobrockers

+0

Um ehrlich zu sein, bin ich mir nicht sicher, ob ich das Bild der Alarmbox hinzugefügt habe. Gibt es einen einfachen Weg, das zu überprüfen? Firebug funktioniert nicht, sobald die Warnung vorhanden ist. – OhAye

+0

Das sieht für mich nicht wie eine Javascript-Warnung aus. – Mobrockers

Antwort

0

die Sie interessieren, wenn Sie UnhandledAlertException in catch

WebDriverWait wait = new WebDriverWait(driver, 3000); 
wait.until(ExpectedConditions.alertIsPresent()); 
Alert alert = webDriver.switchTo().alert(); 
alert.accept(); 

sein kann es Ihnen helfen ... :)

+0

Ich dachte, alert.accept funktioniert nur mit Javascript und nicht modale Dialoge? – OhAye

+1

Haben Sie das implementiert oder Sie haben nur gedacht ??? –

+1

Weil ich mit dieser Art von mehreren Problemen mit Dialogen Modell konfrontiert ... und wenn Selen eindeutig UnhandledAlertException ... bedeutet, es kann durch Selen behandelt werden ... so können Sie nicht nur mit Ihrem Gedanken abstimmen .. –

-1

Für die meisten Warnungen Sie die Eingabetaste drücken können alert`s „ok“ zu drücken.

+1

Ich dachte, aber etwas besser als das Senden der Enter-Taste wollte, werde es als letztes Mittel verwenden :) – OhAye

Verwandte Themen