2016-07-18 5 views
1

Ich habe Schwierigkeiten mit der Schaltfläche senden, es ist nicht in phantomJS der gleiche Code geklickt, wenn in Selen funktioniert. Hat jemand irgendwelche Vorschläge (in Java)?PhantomJS Submit-Taste nicht geklickt - funktioniert in Selen

public class BookFlight

{ WebDriver Treiber; Datei Datei = neue Datei ("C:/Programme/phantomjs-2.1.1-windows/bin/phantomjs.exe"); @Test public void homePageFlightDetails() throws Exception { // Konfiguration GhostDriver System.setProperty ("phantomjs.binary.path", file.getAbsolutePath());

 //*************************************************** 
     // FIREFOX UI DEBUG - Set debug to True for UI debug 
     boolean debug=false; 
     if (debug) 
      { 
      driver= new FirefoxDriver(); 
      driver.manage().window().maximize(); 
      } 
     else 
     { 
      driver=new PhantomJSDriver(); 
     //Set logging to Severe   Logger.getLogger(PhantomJSDriverService.class.getName()).setLevel(Level.SEVERE); 
     } 

     //*************************************************** 
     //Submit Home page and get the title 
     driver.get("http://www.aa.com"); 
     String pageTitle = driver.getTitle(); 
     System.out.println("The Current page title is "+pageTitle); 

     //Find the origin airport field 
     WebElement originAirport=driver.findElement(By.id("reservationFlightSearchForm.originAirport")); 
     //Clear any existing text and enter the origin airport 
     originAirport.clear(); 
     originAirport.sendKeys("PHX"); 

     //Find the destination airport field 
     WebElement destAirport=driver.findElement(By.id("reservationFlightSearchForm.destinationAirport")); 

     destAirport.clear(); 
     destAirport.sendKeys("LAS"); 

     //Find the depart date field 
     WebElement depDate = driver.findElement(By.id("aa-leavingOn")); 
     depDate.clear(); 
     depDate.sendKeys("08/20/2016"); 

     //Find the return date field 
     WebElement retDate = driver.findElement(By.id("aa-returningFrom")); 
     retDate.clear(); 
     retDate.sendKeys("08/24/2016"); 

     //Find the Search up button 
     // WebElement searchButton = driver.findElement(By.id("flightSearchForm.button.reSubmit")); 
     // driver.findElement(By.id("flightSearchForm.button.reSubmit")).click(); 
     // WebElement searchButton = driver.findElement(By.xpath("//*[@value='Search'][@type='submit']")); 

     //phantomjs debug - Verify the button has been found 
     boolean buttonText = driver.findElement(By.xpath("//*[@value='Search'][@type='submit']")).isDisplayed(); 
     System.out.println("buttonText Boolean is = "+buttonText); 

     //Click the Search button   
     //driver.findElement(By.xpath("//*[@value='Search'][@type='submit']")).sendKeys(Keys.RETURN); 

       //*********** This works in Selenium *********** 
     driver.findElement(By.xpath("//*[@value='Search'][@type='submit']")).click(); 
     // Wait for the Choose Flights page to appear 
     int count = 1; 
     do 
      if (driver.getTitle().contains("Choose flights")) 
      { 
       break; 
      } 
      else 
      { 
      System.out.println("do loop iteration "+count+ " the title = "+ driver.getTitle()); 
      Thread.sleep(1000); 
        count++; 
      } 
     while (count < 30);    
     System.out.println("After search the current page title is = "+ driver.getTitle()); 
     Assert.assertTrue(driver.getTitle().contains("Choose flights")); 
     driver.quit(); 
    } 

Antwort

0

Ich begegnet ein ähnliches Problem, wenn PhantomJS über Jmeter (mit WebDriver Sampler) verwendet wird.

Was ich sehen kann, ist, dass ein Modal auf der Seite existiert, die die Felder überlagert, mit denen ich interagieren muss. Ich kann Assertions hinzufügen, um zu überprüfen, ob die Felder und Schaltflächen vorhanden sind und ihre Werte erfassen, einfach nicht auf die Schaltfläche klicken.

Die einzige Problemumgehung, die ich mir vorstellen kann, ist das Aufrufen der Funktion (Schaltfläche Onclick-Funktion) obwohl nicht meine Vorliebe.

Verwandte Themen