2016-12-30 32 views
1

處理使用phantomJS警告我有如下一個Java代碼,當我通過PhantomJs收到「不支持的命令異常」運行,但它工作正常,如果我通過Firefox和Chrome運行: -無法在Java中

注:有了phantomJs,我們可以在下面的代碼中執行到第3步。我在很多博客中搜索過,但這些答案並沒有解決我的問題。

1.  cvvField.sendKeys(cvcData); 
2.  proceedToPayBtn.click(); 
3.  Reporter.log("Card details are submitted from payment UI page"); 
4.  Alert a1=driver.switchTo().alert(); 
5.  Reporter.log("Alert with text:"+a1.getText()); 
6.  a1.accept(); 

這裏cvvField和proceedToPayBtn是WebElements,cvcData的值是「111」。

錯誤日誌: -

org.openqa.selenium.UnsupportedCommandException: Invalid Command Method - 

{"headers":{"Accept-Encoding":"gzip,deflate","Cache-Control":"no-cache","Connection":"Keep-Alive","Host":"localhost:30462","User-Agent":"Apache-HttpClient/4.5.1 (Java/1.8.0_101)"},"httpVersion":"1.1","method":"GET","url":"/alert_text","urlParsed":{"anchor":"","query":"","file":"alert_text","directory":"/","path":"/alert_text","relative":" 

/alert_text","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/alert_text","queryKey":{},"chunks":["alert_text"]},"urlOriginal":"/session/9e392a50-ce79-11e6-b24a-2b12cf1ec4d6/alert_text"} 

命令持續時間或超時:31 milliseconds

我在上面的代碼如下編輯,但同樣的錯誤是coming.Please建議

if (driver instanceof PhantomJSDriver) 
     { 
     JavascriptExecutor je = (JavascriptExecutor) driver; 
     je.executeScript("window.alert = function(){};"); 
     je.executeScript("window.confirm = function(){return true;};");  
     System.out.println("Alert has been handled"); 
     } else { 
      Alert a1 = driver.switchTo().alert(); 
      a1.accept(); 
     }       

我是GE在輸出控制檯中輸入「警報已處理」,但不處理警報。

+0

謝謝@Sumit amble – Aaditya

+0

我已經編輯了上面的代碼,如下所示,但它仍然不工作,顯示相同的錯誤。 – Aaditya

回答

0

一些問題,由於等待時間可以是你的問題 源上面的代碼可以幫助等到元素是可見的(因爲ngWebDriver或硒的webdriver的等待不兼容PhantomJS)

public static String waitJSResponse(PhantomJSDriver driver, String script) { 
     String ReturnedValue = null; 
     int sleeper = 10; 
     Boolean flag = false; 
     int timeOut = 30000; 
     int i = 0; 
     while ((!flag) & ((i*sleeper)<timeOut)) { 
      try { 
       Thread.sleep(sleeper); 
       ReturnedValue = (String) driver.executeScript(script); 

      } catch (Exception e) { 
       flag = false; 
       i++; 
      } 
      if (ReturnedValue != null) { 
       flag = true; 
       System.out.println("Overall wait time is : "+(i * sleeper)+" ms \n\r"); 
       break; 
      } 
     } 
     return ReturnedValue; 
    } 

該代碼將等待10ms,然後驗證該元素是否可見,如果有異常,則會再次循環。 返回的值必須是文本,對象或任何不爲空的內容。 腳本值必須是您的JS腳本才能獲取正確的元素。

希望它的工作。

1.Creating一類「測試」,並在它上面寫的方法: -

我試圖通過上面的代碼。 2.Above方法是通過創建一個對象(的TestObject)作爲

TestObject.waitJSResponse稱爲((PhantomJSDriver)驅動, 「window.confirm =函數(){返回true;};」);

但ReturnedValue在

try {
Thread.sleep(sleeper); ReturnedValue = (String) driver.executeScript(script); System.out.println(ReturnedValue);

}

回報null.So u能請幫助呢?

+0

我回應了我的反饋。請給出您寶貴的建議。 – Aaditya

+0

你不需要做一個Thread.sleep(睡眠),只需添加waitJSResponse作爲一個函數,然後把你想要的腳本放入參數,嘗試它爲我的代碼和它的工作 –

+0

謝謝@Hamza Amami。你可以請幫我這也http://stackoverflow.com/questions/41503733/pop-up-handling-through-phantomjs-in-java – Aaditya