2016-07-18 4 views
1

送信ボタンでは難しいですが、Seleniumで動作しているときに同じコードがphantomJSでクリックされていません。 誰も(Javaで)提案はありますか?PhantomJSの送信ボタンがクリックされていない - Seleniumで動作する

パブリッククラスBookFlight

{webdriverをドライバ。 ファイルファイル=新しいファイル( "C:/ Program Files/phantomjs-2.1.1-windows/bin/phantomjs.exe"); @Test public void homePageFlightDetails()例外をスローする { //セットアップ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(); 
    } 

答えて

0

WebDriver Samplerで)のJMeter経由phantomjsを使用したとき、私は同様の問題に遭遇しています。

私が見ることができるのは、対話する必要があるフィールドをオーバーレイしているページにモーダルが存在することです。アサーションを追加して、フィールドとボタンが存在することを確認し、値をキャプチャして、ボタンをクリックすることはできません。

私の考えることができる唯一の回避策は、自分の好みではないが、関数(ボタンonclick関数)を呼び出すことです。

関連する問題