2016-12-30 2 views
1

У меня есть код Java, как показано ниже, и когда я бегу через PhantomJs получать «неподдерживаемый Command Exception», но он работает нормально, если я бегу через светлячок и хром: -Невозможно обработать оповещение с phantomJS в 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 или Selenium 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; 
    } 

Этот код будет ждать 10 мс, а затем проверить, что элемент висбл, если есть исключение, он будет снова зацикливаться. Возвращаемое значение должно представлять собой текст, объект или что-либо, что не является нулевым. Значение скрипта должно быть вашим JS-скриптом, чтобы получить правильный элемент.

Надеюсь, что это сработает.

Я попробовал код выше по: -

1.Creating класс «Test» и писать выше метода в нем. 2.Above метод вызывается путем создания объекта (TestObject) в качестве

TestObject.waitJSResponse ((PhantomJSDriver) драйвера, "window.confirm = функция() {возвращает истину;};");

Но ReturnedValue в

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

}

возвращает null.So Может у пожалуйста помочь с этим?

+0

Я ответил на мои отзывы. Пожалуйста, дайте свои ценные советы. – Aaditya

+0

Вам не нужно делать Thread.sleep (спящий), просто добавьте waitJSResponse как функцию, затем поместите скрипт в нужные параметры, попробуйте его для моего кода, и он сработал –

+0

Спасибо @Hamza Amami. Не могли бы вы помочь мне с этим также http://stackoverflow.com/questions/41503733/pop-up-handling-through-phantomjs-in-java – Aaditya

Смежные вопросы